DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00707_AAD_S_000020_BC_PKG

Source


1 PACKAGE BODY XLA_00707_AAD_S_000020_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_000020_BC_PKG                                     |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Permanent Inventory Cost Management Encumbrance        |
14 |      Code    : PI_COST_MANAGEMENT_ENC                                 |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 30-03-2009 at 06:03:26 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_000020_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_000020_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_000020_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_000020_BC_PKG.GetMeaning');
228 END GetMeaning;
229 --
230 
231 ---------------------------------------
232 --
233 -- PRIVATE FUNCTION
234 --         Description_1
235 --
236 ---------------------------------------
237 FUNCTION Description_1 (
238   p_application_id      IN NUMBER
239 , p_ae_header_id        IN NUMBER DEFAULT NULL 
240 --TRANSACTION_ID
241  , p_source_1            IN NUMBER
242 --Item Concatenated Segments
243  , p_source_2            IN VARCHAR2
244 --Transaction Quantity
245  , p_source_3            IN NUMBER
246 --Transaction Unit of Measure Code
247  , p_source_4            IN VARCHAR2
248 --Inventory Transaction Type Description
249  , p_source_5            IN VARCHAR2
250 )
251 RETURN VARCHAR2
252 IS
253 l_component_type        VARCHAR2(80)   ;
254 l_component_code        VARCHAR2(30)   ;
255 l_component_type_code   VARCHAR2(1)    ;
256 l_component_appl_id     INTEGER        ;
257 l_amb_context_code      VARCHAR2(30)   ;
258 l_ledger_language       VARCHAR2(30)   ;
259 l_source                VARCHAR2(1996) ;
260 l_description           VARCHAR2(2000) ;
261 l_log_module            VARCHAR2(240)  ;
262 BEGIN
263 IF g_log_enabled THEN
264       l_log_module := C_DEFAULT_MODULE||'.Description_1';
265 END IF;
266 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
267       trace
268          (p_msg      => 'BEGIN of Description_1'
269          ,p_level    => C_LEVEL_PROCEDURE
270          ,p_module   => l_log_module);
271 END IF;
272 
273 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
274 l_component_type        := 'AMB_DESCRIPTION';
275 l_component_code        := 'PI_MATERIAL_TRANSACTION';
276 l_component_type_code   := 'S';
277 l_component_appl_id     :=  707;
278 l_amb_context_code      := 'DEFAULT';
279 l_source                := NULL;
280 l_description           := NULL;
281 
282 
283   
284   l_source := SUBSTR(TO_CHAR(p_source_1),1,1996);
285   IF l_source IS NOT NULL THEN
286     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
287     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
288   END IF;  
289  IF 
290 l_ledger_language = 'US' THEN
291     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
292     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
293  END IF;   
294   l_source := SUBSTR(p_source_2,1,1996);
295   IF l_source IS NOT NULL THEN
296     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
297     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
298   END IF;  
299  IF 
300 l_ledger_language = 'US' THEN
301     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
302     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
303  END IF;   
304   l_source := SUBSTR(TO_CHAR(p_source_3),1,1996);
305   IF l_source IS NOT NULL THEN
306     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
307     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
308   END IF;  
309  IF 
310 l_ledger_language = 'US' THEN
311     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
312     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
313  END IF;   
314   l_source := SUBSTR(p_source_4,1,1996);
315   IF l_source IS NOT NULL THEN
316     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
317     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
318   END IF;  
319  IF 
320 l_ledger_language = 'US' THEN
321     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
322     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
323  END IF;   
324   l_source := SUBSTR(p_source_5,1,1996);
325   IF l_source IS NOT NULL THEN
326     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
327     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
328   END IF; 
329  l_description := SUBSTR(l_description,1,1996);
330   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
331         trace
332            (p_msg      => 'END of Description_1'
333            ,p_level    => C_LEVEL_PROCEDURE
334            ,p_module   => l_log_module);
335 
336   END IF;
337   RETURN l_description;
338 
339 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
340       trace
341          (p_msg      => 'END of Description_1'
342          ,p_level    => C_LEVEL_PROCEDURE
343          ,p_module   => l_log_module);
344 END IF;
345 RETURN NULL;
346 EXCEPTION
347   WHEN VALUE_ERROR THEN
348      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
349             trace
350                (p_msg      => 'ERROR: '||sqlerrm
351                ,p_level    => C_LEVEL_EXCEPTION
352                ,p_module   => l_log_module);
353      END IF;
354      RAISE;
355  WHEN xla_exceptions_pkg.application_exception THEN
356       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
357       trace
358          (p_msg      => 'ERROR: '||sqlerrm
359          ,p_level    => C_LEVEL_EXCEPTION
360          ,p_module   => l_log_module);
361       END IF;
362       RAISE;
363  WHEN OTHERS THEN
364        xla_exceptions_pkg.raise_message
365            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.Description_1');
366 END Description_1;
367 
368 ---------------------------------------
369 --
370 -- PRIVATE FUNCTION
371 --         AcctDerRule_2
372 --
373 ---------------------------------------
374 FUNCTION AcctDerRule_2 (
375   p_application_id              IN NUMBER
376 , p_ae_header_id                IN NUMBER
377 , p_side                        IN VARCHAR2 
378 --Cost Management Default Account
379  , p_source_6            IN NUMBER
380 , x_transaction_coa_id         OUT NOCOPY NUMBER
381 , x_accounting_coa_id          OUT NOCOPY NUMBER
382 , x_value_type_code            OUT NOCOPY VARCHAR2
383 )
384 RETURN NUMBER
385 IS
386 l_component_type       VARCHAR2(80)  ;
387 l_component_code       VARCHAR2(30)  ;
388 l_component_type_code  VARCHAR2(1)   ;
389 l_component_appl_id    INTEGER       ;
390 l_amb_context_code     VARCHAR2(30)  ;
391 l_log_module           VARCHAR2(240) ;
392 l_output_value         NUMBER        ;
393 BEGIN
394 IF g_log_enabled THEN
395       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_2';
396 END IF;
397 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
398       trace
399          (p_msg      => 'BEGIN of AcctDerRule_2'
400          ,p_level    => C_LEVEL_PROCEDURE
401          ,p_module   => l_log_module);
402 END IF;
403 --
404 l_component_type         := 'AMB_ADR';
405 l_component_code         := 'CST_DEFAULT';
406 l_component_type_code    := 'S';
407 l_component_appl_id      :=  707;
408 l_amb_context_code       := 'DEFAULT';
409 x_transaction_coa_id     :=  null;
410 x_accounting_coa_id      :=  null;
411 --
412 
413  --
414   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
415       trace
416          (p_msg      => 'END of AcctDerRule_2'
417          ,p_level    => C_LEVEL_PROCEDURE
418          ,p_module   => l_log_module);
419   END IF;
420   x_value_type_code := 'S';
421   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_6));
422   RETURN l_output_value;
423 
424 --
425 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
426       trace
427          (p_msg      => 'END of AcctDerRule_2(invalid)'
428          ,p_level    => C_LEVEL_PROCEDURE
429          ,p_module   => l_log_module);
430 END IF;
431 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
432 x_value_type_code := null;
433 l_output_value    := null;
434 xla_accounting_err_pkg.build_message
435                  (p_appli_s_name            => 'XLA'
436                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
437                  ,p_token_1                 => 'COMPONENT_NAME'
438                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
439                                                             l_component_type
440                                                           , l_component_code
441                                                           , l_component_type_code
442                                                           , l_component_appl_id
443                                                           , l_amb_context_code
444                                                           )
445                  ,p_token_2                 => 'OWNER'
446                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
447                                                         'XLA_OWNER_TYPE'
448                                                         ,l_component_type_code
449                                                         )
450                  ,p_token_3                 => 'PAD_NAME'
451                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
452                  ,p_token_4                 => 'PAD_OWNER'
453                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
454                                                         'XLA_OWNER_TYPE'
455                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
456                                                         )
457                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
458                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
459                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
460                  ,p_ae_header_id            => NULL
461 );
462 RETURN l_output_value;
463 EXCEPTION
464   WHEN xla_exceptions_pkg.application_exception THEN
465       RAISE;
466   WHEN OTHERS THEN
467        xla_exceptions_pkg.raise_message
468            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctDerRule_2');
469 END AcctDerRule_2;
470 --
471 
472 ---------------------------------------
473 --
474 -- PRIVATE FUNCTION
475 --         AcctLineType_3
476 --
477 ---------------------------------------
478 PROCEDURE AcctLineType_3 (
479   p_application_id        IN NUMBER
480  ,p_event_id              IN NUMBER
481  ,p_calculate_acctd_flag  IN VARCHAR2
482  ,p_calculate_g_l_flag    IN VARCHAR2
483  ,p_actual_flag           IN OUT VARCHAR2
484  ,p_balance_type_code     OUT VARCHAR2
485  ,p_gain_or_loss_ref      OUT VARCHAR2
486  
487 --Cost Management Default Account
488  , p_source_6            IN NUMBER
489 --Accounting Line Type
490  , p_source_7            IN NUMBER
491 --DISTRIBUTION_IDENTIFIER
492  , p_source_8            IN NUMBER
493 --Distribution Type
494  , p_source_9            IN VARCHAR2
495  , p_source_9_meaning    IN VARCHAR2
496 --Entered Amount
497  , p_source_10            IN NUMBER
498 --Entered Currency Code
499  , p_source_11            IN VARCHAR2
500 --Currency Conversion Date
501  , p_source_12            IN DATE
502 --Currency Conversion Rate
503  , p_source_13            IN NUMBER
504 --Currency Conversion Type
505  , p_source_14            IN VARCHAR2
506 --Accounted Amount
507  , p_source_15            IN NUMBER
508 )
509 IS
510 
511 l_component_type              VARCHAR2(80);
512 l_component_code              VARCHAR2(30);
513 l_component_type_code         VARCHAR2(1);
514 l_component_appl_id           INTEGER;
515 l_amb_context_code            VARCHAR2(30);
516 l_entity_code                 VARCHAR2(30);
517 l_event_class_code            VARCHAR2(30);
518 l_ae_header_id                NUMBER;
519 l_event_type_code             VARCHAR2(30);
520 l_line_definition_code        VARCHAR2(30);
521 l_line_definition_owner_code  VARCHAR2(1);
522 --
523 -- adr variables
524 l_segment                     VARCHAR2(30);
525 l_ccid                        NUMBER;
526 l_adr_transaction_coa_id      NUMBER;
527 l_adr_accounting_coa_id       NUMBER;
528 l_adr_flexfield_segment_code  VARCHAR2(30);
529 l_adr_flex_value_set_id       NUMBER;
530 l_adr_value_type_code         VARCHAR2(30);
531 l_adr_value_combination_id    NUMBER;
532 l_adr_value_segment_code      VARCHAR2(30);
533 
534 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
535 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
536 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
537 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
538 
539 -- 4262811 Variables ------------------------------------------------------------------------------------------
540 l_entered_amt_idx             NUMBER;
541 l_accted_amt_idx              NUMBER;
542 l_acc_rev_flag                VARCHAR2(1);
543 l_accrual_line_num            NUMBER;
544 l_tmp_amt                     NUMBER;
545 l_acc_rev_natural_side_code   VARCHAR2(1);
546 
547 l_num_entries                 NUMBER;
548 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
549 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
550 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
551 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
552 l_recog_line_1                NUMBER;
553 l_recog_line_2                NUMBER;
554 
555 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
556 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
557 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
558 
559 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
560 
561 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
562 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
563 
564 ---------------------------------------------------------------------------------------------------------------
565 
566 
567 --
568 -- bulk performance
569 --
570 l_balance_type_code           VARCHAR2(1);
571 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
572 l_log_module                  VARCHAR2(240);
573 
574 --
575 -- Upgrade strategy
576 --
577 l_actual_upg_option           VARCHAR2(1);
578 l_enc_upg_option           VARCHAR2(1);
579 
580 --
581 BEGIN
582 --
583 IF g_log_enabled THEN
584       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_3';
585 END IF;
586 --
587 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
588 
589       trace
590          (p_msg      => 'BEGIN of AcctLineType_3'
591          ,p_level    => C_LEVEL_PROCEDURE
592          ,p_module   => l_log_module);
593 
594 END IF;
595 --
596 l_component_type             := 'AMB_JLT';
597 l_component_code             := 'INTERNAL_ORDER_ENC_RELIEVE';
598 l_component_type_code        := 'S';
599 l_component_appl_id          :=  707;
600 l_amb_context_code           := 'DEFAULT';
601 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
602 l_event_class_code           := 'INT_ORDER_TO_EXP';
603 l_event_type_code            := 'EXP_REQ_RCPT_TP';
604 l_line_definition_owner_code := 'S';
605 l_line_definition_code       := 'ENC_INT_ORD_RCPT_EXP_TP';
606 --
607 l_balance_type_code          := 'E';
608 l_segment                     := NULL;
609 l_ccid                        := NULL;
610 l_adr_transaction_coa_id      := NULL;
611 l_adr_accounting_coa_id       := NULL;
612 l_adr_flexfield_segment_code  := NULL;
613 l_adr_flex_value_set_id       := NULL;
614 l_adr_value_type_code         := NULL;
615 l_adr_value_combination_id    := NULL;
616 l_adr_value_segment_code      := NULL;
617 
618 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
619 l_bflow_class_code           := '';    -- 4219869 Business Flow
620 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
621 l_budgetary_control_flag     := 'Y';
622 
623 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
624 l_bflow_applied_to_amt       := NULL; -- 5132302
625 l_entered_amt_idx            := NULL;          -- 4262811
626 l_accted_amt_idx             := NULL;          -- 4262811
627 l_acc_rev_flag               := NULL;          -- 4262811
628 l_accrual_line_num           := NULL;          -- 4262811
629 l_tmp_amt                    := NULL;          -- 4262811
630 --
631  
632 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
633     l_balance_type_code <> 'B' THEN
634 IF NVL(p_source_7,9E125) =  15
635  THEN 
636 
637    --
638    XLA_AE_LINES_PKG.SetNewLine;
639 
640    p_balance_type_code          := l_balance_type_code;
641    -- set the flag so later we will know whether the gain loss line needs to be created
642    
643    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
644      p_actual_flag :='A';
645    END IF;
646 
647    --
648    -- bulk performance
649    --
650    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
651                                       p_header_num   => 0); -- 4262811
652    --
653    -- set accounting line options
654    --
655    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
656            p_natural_side_code          => 'D'
657          , p_gain_or_loss_flag          => 'N'
658          , p_gl_transfer_mode_code      => 'S'
659          , p_acct_entry_type_code       => 'E'
660          , p_switch_side_flag           => 'Y'
661          , p_merge_duplicate_code       => 'N'
662          );
663    --
664    l_acc_rev_natural_side_code := 'C';  -- 4262811
665    -- 
666    --
667    -- set accounting line type info
668    --
669    xla_ae_lines_pkg.SetAcctLineType
670       (p_component_type             => l_component_type
671       ,p_event_type_code            => l_event_type_code
672       ,p_line_definition_owner_code => l_line_definition_owner_code
673       ,p_line_definition_code       => l_line_definition_code
674       ,p_accounting_line_code       => l_component_code
675       ,p_accounting_line_type_code  => l_component_type_code
676       ,p_accounting_line_appl_id    => l_component_appl_id
677       ,p_amb_context_code           => l_amb_context_code
678       ,p_entity_code                => l_entity_code
679       ,p_event_class_code           => l_event_class_code);
680    --
681    -- set accounting class
682    --
683    xla_ae_lines_pkg.SetAcctClass(
684            p_accounting_class_code  => 'REQUISITION'
685          , p_ae_header_id           => l_ae_header_id
686          );
687 
688    --
689    -- set rounding class
690    --
691    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
692                       'REQUISITION';
693 
694    --
695    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
696    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
697    --
698    -- bulk performance
699    --
700    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
701 
702    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
703       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
704 
705    -- 4955764
706    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
707       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
708 
709    -- 4458381 Public Sector Enh
710       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
711    --
712    -- set accounting attributes for the line type
713    --
714    l_entered_amt_idx := 3;
715    l_accted_amt_idx  := 8;
716    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
717    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
718    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_8);
719    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
720    l_rec_acct_attrs.array_char_value(2)  := p_source_9;
721    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
722    l_rec_acct_attrs.array_num_value(3)  := p_source_10;
723    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
724    l_rec_acct_attrs.array_char_value(4)  := p_source_11;
725    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
726    l_rec_acct_attrs.array_date_value(5)  := p_source_12;
727    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
728    l_rec_acct_attrs.array_num_value(6)  := p_source_13;
729    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
730    l_rec_acct_attrs.array_char_value(7)  := p_source_14;
731    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
732    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
733 
734    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
735    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
736 
737    ---------------------------------------------------------------------------------------------------------------
738    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
739    ---------------------------------------------------------------------------------------------------------------
740    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
741 
742    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
743    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
744 
745    IF xla_accounting_cache_pkg.GetValueChar
746          (p_source_code         => 'LEDGER_CATEGORY_CODE'
747          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
748    AND l_bflow_method_code = 'PRIOR_ENTRY'
749 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
750    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
751          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
752        )
753    THEN
754          xla_ae_lines_pkg.BflowUpgEntry
755            (p_business_method_code    => l_bflow_method_code
756            ,p_business_class_code     => l_bflow_class_code
757            ,p_balance_type            => l_balance_type_code);
758    ELSE
759       NULL;
760 -- No business flow processing for business flow method of NONE.
761    END IF;
762 
763    --
764    -- call analytical criteria
765    --
766    
767    --
768    -- call description
769    --
770    -- No description or it is inherited.
771    --
772    -- call ADRs
773    -- Bug 4922099
774    --
775    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
776         (NVL(l_actual_upg_option, 'N') = 'O') OR
777         (NVL(l_enc_upg_option, 'N') = 'O')
778       )
779    THEN
780    NULL;
781    --
782    --
783    
784   l_ccid := AcctDerRule_2(
785            p_application_id           => p_application_id
786          , p_ae_header_id             => l_ae_header_id 
787 , p_source_6 => p_source_6
788          , x_transaction_coa_id       => l_adr_transaction_coa_id
789          , x_accounting_coa_id        => l_adr_accounting_coa_id
790          , x_value_type_code          => l_adr_value_type_code
791          , p_side                     => 'NA'
792    );
793 
794    xla_ae_lines_pkg.set_ccid(
795     p_code_combination_id          => l_ccid
796   , p_value_type_code              => l_adr_value_type_code
797   , p_transaction_coa_id           => l_adr_transaction_coa_id
798   , p_accounting_coa_id            => l_adr_accounting_coa_id
799   , p_adr_code                     => 'CST_DEFAULT'
800   , p_adr_type_code                => 'S'
801   , p_component_type               => l_component_type
802   , p_component_code               => l_component_code
803   , p_component_type_code          => l_component_type_code
804   , p_component_appl_id            => l_component_appl_id
805   , p_amb_context_code             => l_amb_context_code
806   , p_side                         => 'NA'
807   );
808 
809 
810    --
811    --
812    END IF;
813    --
814    -- Bug 4922099
815    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
816           (NVL(l_enc_upg_option, 'N') = 'O')
817         ) AND
818         (l_bflow_method_code = 'PRIOR_ENTRY')
819       )
820    THEN
821       IF
822       --
823       1 = 2
824       --
825       THEN
826       xla_accounting_err_pkg.build_message
827                                     (p_appli_s_name            => 'XLA'
828                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
829                                     ,p_token_1                 => 'LINE_NUMBER'
830                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
831                                     ,p_token_2                 => 'LINE_TYPE_NAME'
832                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
833                                                                              l_component_type
834                                                                             ,l_component_code
835                                                                             ,l_component_type_code
836                                                                             ,l_component_appl_id
837                                                                             ,l_amb_context_code
838                                                                             ,l_entity_code
839                                                                             ,l_event_class_code
840                                                                            )
841                                     ,p_token_3                 => 'OWNER'
842                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
843                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
844                                                                           ,p_lookup_code    => l_component_type_code
845                                                                          )
846                                     ,p_token_4                 => 'PRODUCT_NAME'
847                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
848                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
849                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
850                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
851                                     ,p_ae_header_id            =>  NULL
852                                        );
853 
854         IF (C_LEVEL_ERROR>= g_log_level) THEN
855                  trace
856                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
857                       ,p_level    => C_LEVEL_ERROR
858                       ,p_module   => l_log_module);
859         END IF;
860       END IF;
861    END IF;
862    --
863    --
864    ------------------------------------------------------------------------------------------------
865    -- 4219869 Business Flow
866    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
867    -- Prior Entry.  Currently, the following code is always generated.
868    ------------------------------------------------------------------------------------------------
869    XLA_AE_LINES_PKG.ValidateCurrentLine;
870 
871    ------------------------------------------------------------------------------------
872    -- 4219869 Business Flow
873    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
874    ------------------------------------------------------------------------------------
875    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
876 
877    ----------------------------------------------------------------------------------
878    -- 4219869 Business Flow
879    -- Update journal entry status -- Need to generate this within IF <condition>
880    ----------------------------------------------------------------------------------
881    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
882          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
883          ,p_balance_type_code => l_balance_type_code
884          );
885 
886    -------------------------------------------------------------------------------------------
887    -- 4262811 - Generate the Accrual Reversal lines
888    -------------------------------------------------------------------------------------------
889    BEGIN
890       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
891                               (g_array_event(p_event_id).array_value_num('header_index'));
892       IF l_acc_rev_flag IS NULL THEN
893          l_acc_rev_flag := 'N';
894       END IF;
895    EXCEPTION
896       WHEN OTHERS THEN
897          l_acc_rev_flag := 'N';
898    END;
899    --
900    IF (l_acc_rev_flag = 'Y') THEN
901 
902        -- 4645092  ------------------------------------------------------------------------------
903        -- To allow MPA report to determine if it should generate report process
904        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
905        ------------------------------------------------------------------------------------------
906 
907        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
908        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
909    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
910    -- call ADRs
911    -- Bug 4922099
912    --
913    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
914         (NVL(l_actual_upg_option, 'N') = 'O') OR
915         (NVL(l_enc_upg_option, 'N') = 'O')
916       )
917    THEN
918    NULL;
919    --
920    --
921    
922   l_ccid := AcctDerRule_2(
923            p_application_id           => p_application_id
924          , p_ae_header_id             => l_ae_header_id 
925 , p_source_6 => p_source_6
926          , x_transaction_coa_id       => l_adr_transaction_coa_id
927          , x_accounting_coa_id        => l_adr_accounting_coa_id
928          , x_value_type_code          => l_adr_value_type_code
929          , p_side                     => 'NA'
930    );
931 
932    xla_ae_lines_pkg.set_ccid(
933     p_code_combination_id          => l_ccid
934   , p_value_type_code              => l_adr_value_type_code
935   , p_transaction_coa_id           => l_adr_transaction_coa_id
936   , p_accounting_coa_id            => l_adr_accounting_coa_id
937   , p_adr_code                     => 'CST_DEFAULT'
938   , p_adr_type_code                => 'S'
939   , p_component_type               => l_component_type
940   , p_component_code               => l_component_code
941   , p_component_type_code          => l_component_type_code
942   , p_component_appl_id            => l_component_appl_id
943   , p_amb_context_code             => l_amb_context_code
944   , p_side                         => 'NA'
945   );
946 
947 
948    --
949    --
950    END IF;
951 
952        --
953        -- Update the line information that should be overwritten
954        --
955        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
956                                          p_header_num   => 1);
957        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
958 
959        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
960 
961        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
962           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
963        END IF;
964 
965       --
966       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
967       --
968       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
969           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
970       ELSE
971           ---------------------------------------------------------------------------------------------------
972           -- 4262811a Switch Sign
973           ---------------------------------------------------------------------------------------------------
974           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
975           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
976                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
977           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
978                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
979           -- 5132302
980           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
981                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
982 
983       END IF;
984 
985       -- 4955764
986       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
987       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
988 
989 
990       XLA_AE_LINES_PKG.ValidateCurrentLine;
991       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
992 
993       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
994                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
995                ,p_balance_type_code => l_balance_type_code);
996 
997    END IF;
998 
999    -----------------------------------------------------------------------------------------
1000    -- 4262811 Multiperiod Accounting
1001    -----------------------------------------------------------------------------------------
1002      -- No MPA option is assigned.
1003 
1004 
1005 END IF;
1006 END IF;
1007 --
1008 
1009 --
1010 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1011    trace
1012       (p_msg      => 'END of AcctLineType_3'
1013       ,p_level    => C_LEVEL_PROCEDURE
1014       ,p_module   => l_log_module);
1015 END IF;
1016 --
1017 EXCEPTION
1018   WHEN xla_exceptions_pkg.application_exception THEN
1019       RAISE;
1020   WHEN OTHERS THEN
1021        xla_exceptions_pkg.raise_message
1022            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_3');
1023 END AcctLineType_3;
1024 --
1025 
1026 ---------------------------------------
1027 --
1028 -- PRIVATE FUNCTION
1029 --         AcctLineType_4
1030 --
1031 ---------------------------------------
1032 PROCEDURE AcctLineType_4 (
1033   p_application_id        IN NUMBER
1034  ,p_event_id              IN NUMBER
1035  ,p_calculate_acctd_flag  IN VARCHAR2
1036  ,p_calculate_g_l_flag    IN VARCHAR2
1037  ,p_actual_flag           IN OUT VARCHAR2
1038  ,p_balance_type_code     OUT VARCHAR2
1039  ,p_gain_or_loss_ref      OUT VARCHAR2
1040  
1041 --Cost Management Default Account
1042  , p_source_6            IN NUMBER
1043 --Accounting Line Type
1044  , p_source_7            IN NUMBER
1045 --DISTRIBUTION_IDENTIFIER
1046  , p_source_8            IN NUMBER
1047 --Distribution Type
1048  , p_source_9            IN VARCHAR2
1049  , p_source_9_meaning    IN VARCHAR2
1050 --Entered Amount
1051  , p_source_10            IN NUMBER
1052 --Entered Currency Code
1053  , p_source_11            IN VARCHAR2
1054 --Currency Conversion Date
1055  , p_source_12            IN DATE
1056 --Currency Conversion Rate
1057  , p_source_13            IN NUMBER
1058 --Currency Conversion Type
1059  , p_source_14            IN VARCHAR2
1060 --Accounted Amount
1061  , p_source_15            IN NUMBER
1062 )
1063 IS
1064 
1065 l_component_type              VARCHAR2(80);
1066 l_component_code              VARCHAR2(30);
1067 l_component_type_code         VARCHAR2(1);
1068 l_component_appl_id           INTEGER;
1069 l_amb_context_code            VARCHAR2(30);
1070 l_entity_code                 VARCHAR2(30);
1071 l_event_class_code            VARCHAR2(30);
1072 l_ae_header_id                NUMBER;
1073 l_event_type_code             VARCHAR2(30);
1074 l_line_definition_code        VARCHAR2(30);
1075 l_line_definition_owner_code  VARCHAR2(1);
1076 --
1077 -- adr variables
1078 l_segment                     VARCHAR2(30);
1079 l_ccid                        NUMBER;
1080 l_adr_transaction_coa_id      NUMBER;
1081 l_adr_accounting_coa_id       NUMBER;
1082 l_adr_flexfield_segment_code  VARCHAR2(30);
1083 l_adr_flex_value_set_id       NUMBER;
1084 l_adr_value_type_code         VARCHAR2(30);
1085 l_adr_value_combination_id    NUMBER;
1086 l_adr_value_segment_code      VARCHAR2(30);
1087 
1088 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
1089 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
1090 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
1091 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1092 
1093 -- 4262811 Variables ------------------------------------------------------------------------------------------
1094 l_entered_amt_idx             NUMBER;
1095 l_accted_amt_idx              NUMBER;
1096 l_acc_rev_flag                VARCHAR2(1);
1097 l_accrual_line_num            NUMBER;
1098 l_tmp_amt                     NUMBER;
1099 l_acc_rev_natural_side_code   VARCHAR2(1);
1100 
1101 l_num_entries                 NUMBER;
1102 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1103 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1104 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1105 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1106 l_recog_line_1                NUMBER;
1107 l_recog_line_2                NUMBER;
1108 
1109 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1110 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1111 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1112 
1113 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1114 
1115 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1116 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1117 
1118 ---------------------------------------------------------------------------------------------------------------
1119 
1120 
1121 --
1122 -- bulk performance
1123 --
1124 l_balance_type_code           VARCHAR2(1);
1125 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1126 l_log_module                  VARCHAR2(240);
1127 
1128 --
1129 -- Upgrade strategy
1130 --
1131 l_actual_upg_option           VARCHAR2(1);
1132 l_enc_upg_option           VARCHAR2(1);
1133 
1134 --
1135 BEGIN
1136 --
1137 IF g_log_enabled THEN
1138       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_4';
1139 END IF;
1140 --
1141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1142 
1143       trace
1144          (p_msg      => 'BEGIN of AcctLineType_4'
1145          ,p_level    => C_LEVEL_PROCEDURE
1146          ,p_module   => l_log_module);
1147 
1148 END IF;
1149 --
1150 l_component_type             := 'AMB_JLT';
1151 l_component_code             := 'INTERNAL_ORDER_ENC_RELIEVE';
1152 l_component_type_code        := 'S';
1153 l_component_appl_id          :=  707;
1154 l_amb_context_code           := 'DEFAULT';
1155 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
1156 l_event_class_code           := 'INT_ORDER_TO_EXP';
1157 l_event_type_code            := 'INT_ORDER_ISSUE_TP';
1158 l_line_definition_owner_code := 'S';
1159 l_line_definition_code       := 'ENC_INT_ORD_ISSUE_EXP_TP';
1160 --
1161 l_balance_type_code          := 'E';
1162 l_segment                     := NULL;
1163 l_ccid                        := NULL;
1164 l_adr_transaction_coa_id      := NULL;
1165 l_adr_accounting_coa_id       := NULL;
1166 l_adr_flexfield_segment_code  := NULL;
1167 l_adr_flex_value_set_id       := NULL;
1168 l_adr_value_type_code         := NULL;
1169 l_adr_value_combination_id    := NULL;
1170 l_adr_value_segment_code      := NULL;
1171 
1172 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
1173 l_bflow_class_code           := '';    -- 4219869 Business Flow
1174 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1175 l_budgetary_control_flag     := 'Y';
1176 
1177 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1178 l_bflow_applied_to_amt       := NULL; -- 5132302
1179 l_entered_amt_idx            := NULL;          -- 4262811
1180 l_accted_amt_idx             := NULL;          -- 4262811
1181 l_acc_rev_flag               := NULL;          -- 4262811
1182 l_accrual_line_num           := NULL;          -- 4262811
1183 l_tmp_amt                    := NULL;          -- 4262811
1184 --
1185  
1186 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1187     l_balance_type_code <> 'B' THEN
1188 IF NVL(p_source_7,9E125) =  15
1189  THEN 
1190 
1191    --
1192    XLA_AE_LINES_PKG.SetNewLine;
1193 
1194    p_balance_type_code          := l_balance_type_code;
1195    -- set the flag so later we will know whether the gain loss line needs to be created
1196    
1197    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1198      p_actual_flag :='A';
1199    END IF;
1200 
1201    --
1202    -- bulk performance
1203    --
1204    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1205                                       p_header_num   => 0); -- 4262811
1206    --
1207    -- set accounting line options
1208    --
1209    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1210            p_natural_side_code          => 'D'
1211          , p_gain_or_loss_flag          => 'N'
1212          , p_gl_transfer_mode_code      => 'S'
1213          , p_acct_entry_type_code       => 'E'
1214          , p_switch_side_flag           => 'Y'
1215          , p_merge_duplicate_code       => 'N'
1216          );
1217    --
1218    l_acc_rev_natural_side_code := 'C';  -- 4262811
1219    -- 
1220    --
1221    -- set accounting line type info
1222    --
1223    xla_ae_lines_pkg.SetAcctLineType
1224       (p_component_type             => l_component_type
1225       ,p_event_type_code            => l_event_type_code
1226       ,p_line_definition_owner_code => l_line_definition_owner_code
1227       ,p_line_definition_code       => l_line_definition_code
1228       ,p_accounting_line_code       => l_component_code
1229       ,p_accounting_line_type_code  => l_component_type_code
1230       ,p_accounting_line_appl_id    => l_component_appl_id
1231       ,p_amb_context_code           => l_amb_context_code
1232       ,p_entity_code                => l_entity_code
1233       ,p_event_class_code           => l_event_class_code);
1234    --
1235    -- set accounting class
1236    --
1237    xla_ae_lines_pkg.SetAcctClass(
1238            p_accounting_class_code  => 'REQUISITION'
1239          , p_ae_header_id           => l_ae_header_id
1240          );
1241 
1242    --
1243    -- set rounding class
1244    --
1245    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1246                       'REQUISITION';
1247 
1248    --
1249    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1250    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1251    --
1252    -- bulk performance
1253    --
1254    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1255 
1256    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1257       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1258 
1259    -- 4955764
1260    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1261       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1262 
1263    -- 4458381 Public Sector Enh
1264       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
1265    --
1266    -- set accounting attributes for the line type
1267    --
1268    l_entered_amt_idx := 3;
1269    l_accted_amt_idx  := 8;
1270    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1271    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
1272    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_8);
1273    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
1274    l_rec_acct_attrs.array_char_value(2)  := p_source_9;
1275    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
1276    l_rec_acct_attrs.array_num_value(3)  := p_source_10;
1277    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
1278    l_rec_acct_attrs.array_char_value(4)  := p_source_11;
1279    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
1280    l_rec_acct_attrs.array_date_value(5)  := p_source_12;
1281    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
1282    l_rec_acct_attrs.array_num_value(6)  := p_source_13;
1283    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
1284    l_rec_acct_attrs.array_char_value(7)  := p_source_14;
1285    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
1286    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
1287 
1288    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1289    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1290 
1291    ---------------------------------------------------------------------------------------------------------------
1292    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1293    ---------------------------------------------------------------------------------------------------------------
1294    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1295 
1296    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1297    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1298 
1299    IF xla_accounting_cache_pkg.GetValueChar
1300          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1301          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1302    AND l_bflow_method_code = 'PRIOR_ENTRY'
1303 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1304    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1305          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1306        )
1307    THEN
1308          xla_ae_lines_pkg.BflowUpgEntry
1309            (p_business_method_code    => l_bflow_method_code
1310            ,p_business_class_code     => l_bflow_class_code
1311            ,p_balance_type            => l_balance_type_code);
1312    ELSE
1313       NULL;
1314 -- No business flow processing for business flow method of NONE.
1315    END IF;
1316 
1317    --
1318    -- call analytical criteria
1319    --
1320    
1321    --
1322    -- call description
1323    --
1324    -- No description or it is inherited.
1325    --
1326    -- call ADRs
1327    -- Bug 4922099
1328    --
1329    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1330         (NVL(l_actual_upg_option, 'N') = 'O') OR
1331         (NVL(l_enc_upg_option, 'N') = 'O')
1332       )
1333    THEN
1334    NULL;
1335    --
1336    --
1337    
1338   l_ccid := AcctDerRule_2(
1339            p_application_id           => p_application_id
1340          , p_ae_header_id             => l_ae_header_id 
1341 , p_source_6 => p_source_6
1342          , x_transaction_coa_id       => l_adr_transaction_coa_id
1343          , x_accounting_coa_id        => l_adr_accounting_coa_id
1344          , x_value_type_code          => l_adr_value_type_code
1345          , p_side                     => 'NA'
1346    );
1347 
1348    xla_ae_lines_pkg.set_ccid(
1349     p_code_combination_id          => l_ccid
1350   , p_value_type_code              => l_adr_value_type_code
1351   , p_transaction_coa_id           => l_adr_transaction_coa_id
1352   , p_accounting_coa_id            => l_adr_accounting_coa_id
1353   , p_adr_code                     => 'CST_DEFAULT'
1354   , p_adr_type_code                => 'S'
1355   , p_component_type               => l_component_type
1356   , p_component_code               => l_component_code
1357   , p_component_type_code          => l_component_type_code
1358   , p_component_appl_id            => l_component_appl_id
1359   , p_amb_context_code             => l_amb_context_code
1360   , p_side                         => 'NA'
1361   );
1362 
1363 
1364    --
1365    --
1366    END IF;
1367    --
1368    -- Bug 4922099
1369    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1370           (NVL(l_enc_upg_option, 'N') = 'O')
1371         ) AND
1372         (l_bflow_method_code = 'PRIOR_ENTRY')
1373       )
1374    THEN
1375       IF
1376       --
1377       1 = 2
1378       --
1379       THEN
1380       xla_accounting_err_pkg.build_message
1381                                     (p_appli_s_name            => 'XLA'
1382                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1383                                     ,p_token_1                 => 'LINE_NUMBER'
1384                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1385                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1386                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1387                                                                              l_component_type
1388                                                                             ,l_component_code
1389                                                                             ,l_component_type_code
1390                                                                             ,l_component_appl_id
1391                                                                             ,l_amb_context_code
1392                                                                             ,l_entity_code
1393                                                                             ,l_event_class_code
1394                                                                            )
1395                                     ,p_token_3                 => 'OWNER'
1396                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1397                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1398                                                                           ,p_lookup_code    => l_component_type_code
1399                                                                          )
1400                                     ,p_token_4                 => 'PRODUCT_NAME'
1401                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1402                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1403                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1404                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1405                                     ,p_ae_header_id            =>  NULL
1406                                        );
1407 
1408         IF (C_LEVEL_ERROR>= g_log_level) THEN
1409                  trace
1410                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1411                       ,p_level    => C_LEVEL_ERROR
1412                       ,p_module   => l_log_module);
1413         END IF;
1414       END IF;
1415    END IF;
1416    --
1417    --
1418    ------------------------------------------------------------------------------------------------
1419    -- 4219869 Business Flow
1420    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1421    -- Prior Entry.  Currently, the following code is always generated.
1422    ------------------------------------------------------------------------------------------------
1423    XLA_AE_LINES_PKG.ValidateCurrentLine;
1424 
1425    ------------------------------------------------------------------------------------
1426    -- 4219869 Business Flow
1427    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1428    ------------------------------------------------------------------------------------
1429    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1430 
1431    ----------------------------------------------------------------------------------
1432    -- 4219869 Business Flow
1433    -- Update journal entry status -- Need to generate this within IF <condition>
1434    ----------------------------------------------------------------------------------
1435    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1436          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1437          ,p_balance_type_code => l_balance_type_code
1438          );
1439 
1440    -------------------------------------------------------------------------------------------
1441    -- 4262811 - Generate the Accrual Reversal lines
1442    -------------------------------------------------------------------------------------------
1443    BEGIN
1444       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1445                               (g_array_event(p_event_id).array_value_num('header_index'));
1446       IF l_acc_rev_flag IS NULL THEN
1447          l_acc_rev_flag := 'N';
1448       END IF;
1449    EXCEPTION
1450       WHEN OTHERS THEN
1451          l_acc_rev_flag := 'N';
1452    END;
1453    --
1454    IF (l_acc_rev_flag = 'Y') THEN
1455 
1456        -- 4645092  ------------------------------------------------------------------------------
1457        -- To allow MPA report to determine if it should generate report process
1458        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
1459        ------------------------------------------------------------------------------------------
1460 
1461        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
1462        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
1463    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
1464    -- call ADRs
1465    -- Bug 4922099
1466    --
1467    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1468         (NVL(l_actual_upg_option, 'N') = 'O') OR
1469         (NVL(l_enc_upg_option, 'N') = 'O')
1470       )
1471    THEN
1472    NULL;
1473    --
1474    --
1475    
1476   l_ccid := AcctDerRule_2(
1477            p_application_id           => p_application_id
1478          , p_ae_header_id             => l_ae_header_id 
1479 , p_source_6 => p_source_6
1480          , x_transaction_coa_id       => l_adr_transaction_coa_id
1481          , x_accounting_coa_id        => l_adr_accounting_coa_id
1482          , x_value_type_code          => l_adr_value_type_code
1483          , p_side                     => 'NA'
1484    );
1485 
1486    xla_ae_lines_pkg.set_ccid(
1487     p_code_combination_id          => l_ccid
1488   , p_value_type_code              => l_adr_value_type_code
1489   , p_transaction_coa_id           => l_adr_transaction_coa_id
1490   , p_accounting_coa_id            => l_adr_accounting_coa_id
1491   , p_adr_code                     => 'CST_DEFAULT'
1492   , p_adr_type_code                => 'S'
1493   , p_component_type               => l_component_type
1494   , p_component_code               => l_component_code
1495   , p_component_type_code          => l_component_type_code
1496   , p_component_appl_id            => l_component_appl_id
1497   , p_amb_context_code             => l_amb_context_code
1498   , p_side                         => 'NA'
1499   );
1500 
1501 
1502    --
1503    --
1504    END IF;
1505 
1506        --
1507        -- Update the line information that should be overwritten
1508        --
1509        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
1510                                          p_header_num   => 1);
1511        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
1512 
1513        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
1514 
1515        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
1516           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
1517        END IF;
1518 
1519       --
1520       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
1521       --
1522       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
1523           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
1524       ELSE
1525           ---------------------------------------------------------------------------------------------------
1526           -- 4262811a Switch Sign
1527           ---------------------------------------------------------------------------------------------------
1528           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
1529           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1530                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1531           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
1532                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1533           -- 5132302
1534           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
1535                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
1536 
1537       END IF;
1538 
1539       -- 4955764
1540       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1541       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
1542 
1543 
1544       XLA_AE_LINES_PKG.ValidateCurrentLine;
1545       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1546 
1547       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1548                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
1549                ,p_balance_type_code => l_balance_type_code);
1550 
1551    END IF;
1552 
1553    -----------------------------------------------------------------------------------------
1554    -- 4262811 Multiperiod Accounting
1555    -----------------------------------------------------------------------------------------
1556      -- No MPA option is assigned.
1557 
1558 
1559 END IF;
1560 END IF;
1561 --
1562 
1563 --
1564 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1565    trace
1566       (p_msg      => 'END of AcctLineType_4'
1567       ,p_level    => C_LEVEL_PROCEDURE
1568       ,p_module   => l_log_module);
1569 END IF;
1570 --
1571 EXCEPTION
1572   WHEN xla_exceptions_pkg.application_exception THEN
1573       RAISE;
1574   WHEN OTHERS THEN
1575        xla_exceptions_pkg.raise_message
1576            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_4');
1577 END AcctLineType_4;
1578 --
1579 
1580 ---------------------------------------
1581 --
1582 -- PRIVATE FUNCTION
1583 --         AcctLineType_5
1584 --
1585 ---------------------------------------
1586 PROCEDURE AcctLineType_5 (
1587   p_application_id        IN NUMBER
1588  ,p_event_id              IN NUMBER
1589  ,p_calculate_acctd_flag  IN VARCHAR2
1590  ,p_calculate_g_l_flag    IN VARCHAR2
1591  ,p_actual_flag           IN OUT VARCHAR2
1592  ,p_balance_type_code     OUT VARCHAR2
1593  ,p_gain_or_loss_ref      OUT VARCHAR2
1594  
1595 --Cost Management Default Account
1596  , p_source_6            IN NUMBER
1597 --Accounting Line Type
1598  , p_source_7            IN NUMBER
1599 --DISTRIBUTION_IDENTIFIER
1600  , p_source_8            IN NUMBER
1601 --Distribution Type
1602  , p_source_9            IN VARCHAR2
1603  , p_source_9_meaning    IN VARCHAR2
1604 --Entered Amount
1605  , p_source_10            IN NUMBER
1606 --Entered Currency Code
1607  , p_source_11            IN VARCHAR2
1608 --Currency Conversion Date
1609  , p_source_12            IN DATE
1610 --Currency Conversion Rate
1611  , p_source_13            IN NUMBER
1612 --Currency Conversion Type
1613  , p_source_14            IN VARCHAR2
1614 --Accounted Amount
1615  , p_source_15            IN NUMBER
1616 )
1617 IS
1618 
1619 l_component_type              VARCHAR2(80);
1620 l_component_code              VARCHAR2(30);
1621 l_component_type_code         VARCHAR2(1);
1622 l_component_appl_id           INTEGER;
1623 l_amb_context_code            VARCHAR2(30);
1624 l_entity_code                 VARCHAR2(30);
1625 l_event_class_code            VARCHAR2(30);
1626 l_ae_header_id                NUMBER;
1627 l_event_type_code             VARCHAR2(30);
1628 l_line_definition_code        VARCHAR2(30);
1629 l_line_definition_owner_code  VARCHAR2(1);
1630 --
1631 -- adr variables
1632 l_segment                     VARCHAR2(30);
1633 l_ccid                        NUMBER;
1634 l_adr_transaction_coa_id      NUMBER;
1635 l_adr_accounting_coa_id       NUMBER;
1636 l_adr_flexfield_segment_code  VARCHAR2(30);
1637 l_adr_flex_value_set_id       NUMBER;
1638 l_adr_value_type_code         VARCHAR2(30);
1639 l_adr_value_combination_id    NUMBER;
1640 l_adr_value_segment_code      VARCHAR2(30);
1641 
1642 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
1643 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
1644 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
1645 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
1646 
1647 -- 4262811 Variables ------------------------------------------------------------------------------------------
1648 l_entered_amt_idx             NUMBER;
1649 l_accted_amt_idx              NUMBER;
1650 l_acc_rev_flag                VARCHAR2(1);
1651 l_accrual_line_num            NUMBER;
1652 l_tmp_amt                     NUMBER;
1653 l_acc_rev_natural_side_code   VARCHAR2(1);
1654 
1655 l_num_entries                 NUMBER;
1656 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
1657 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
1658 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
1659 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
1660 l_recog_line_1                NUMBER;
1661 l_recog_line_2                NUMBER;
1662 
1663 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
1664 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
1665 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
1666 
1667 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
1668 
1669 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
1670 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
1671 
1672 ---------------------------------------------------------------------------------------------------------------
1673 
1674 
1675 --
1676 -- bulk performance
1677 --
1678 l_balance_type_code           VARCHAR2(1);
1679 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
1680 l_log_module                  VARCHAR2(240);
1681 
1682 --
1683 -- Upgrade strategy
1684 --
1685 l_actual_upg_option           VARCHAR2(1);
1686 l_enc_upg_option           VARCHAR2(1);
1687 
1688 --
1689 BEGIN
1690 --
1691 IF g_log_enabled THEN
1692       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_5';
1693 END IF;
1694 --
1695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1696 
1697       trace
1698          (p_msg      => 'BEGIN of AcctLineType_5'
1699          ,p_level    => C_LEVEL_PROCEDURE
1700          ,p_module   => l_log_module);
1701 
1702 END IF;
1703 --
1704 l_component_type             := 'AMB_JLT';
1705 l_component_code             := 'INTERNAL_ORDER_ENC_RELIEVE';
1706 l_component_type_code        := 'S';
1707 l_component_appl_id          :=  707;
1708 l_amb_context_code           := 'DEFAULT';
1709 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
1710 l_event_class_code           := 'INT_ORDER_TO_EXP';
1711 l_event_type_code            := 'EXP_REQ_RCPT_NO_TP';
1712 l_line_definition_owner_code := 'S';
1713 l_line_definition_code       := 'ENC_INT_ORD_RCPT_EXP_NTP';
1714 --
1715 l_balance_type_code          := 'E';
1716 l_segment                     := NULL;
1717 l_ccid                        := NULL;
1718 l_adr_transaction_coa_id      := NULL;
1719 l_adr_accounting_coa_id       := NULL;
1720 l_adr_flexfield_segment_code  := NULL;
1721 l_adr_flex_value_set_id       := NULL;
1722 l_adr_value_type_code         := NULL;
1723 l_adr_value_combination_id    := NULL;
1724 l_adr_value_segment_code      := NULL;
1725 
1726 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
1727 l_bflow_class_code           := '';    -- 4219869 Business Flow
1728 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
1729 l_budgetary_control_flag     := 'Y';
1730 
1731 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
1732 l_bflow_applied_to_amt       := NULL; -- 5132302
1733 l_entered_amt_idx            := NULL;          -- 4262811
1734 l_accted_amt_idx             := NULL;          -- 4262811
1735 l_acc_rev_flag               := NULL;          -- 4262811
1736 l_accrual_line_num           := NULL;          -- 4262811
1737 l_tmp_amt                    := NULL;          -- 4262811
1738 --
1739  
1740 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
1741     l_balance_type_code <> 'B' THEN
1742 IF NVL(p_source_7,9E125) =  15
1743  THEN 
1744 
1745    --
1746    XLA_AE_LINES_PKG.SetNewLine;
1747 
1748    p_balance_type_code          := l_balance_type_code;
1749    -- set the flag so later we will know whether the gain loss line needs to be created
1750    
1751    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
1752      p_actual_flag :='A';
1753    END IF;
1754 
1755    --
1756    -- bulk performance
1757    --
1758    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
1759                                       p_header_num   => 0); -- 4262811
1760    --
1761    -- set accounting line options
1762    --
1763    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
1764            p_natural_side_code          => 'D'
1765          , p_gain_or_loss_flag          => 'N'
1766          , p_gl_transfer_mode_code      => 'S'
1767          , p_acct_entry_type_code       => 'E'
1768          , p_switch_side_flag           => 'Y'
1769          , p_merge_duplicate_code       => 'N'
1770          );
1771    --
1772    l_acc_rev_natural_side_code := 'C';  -- 4262811
1773    -- 
1774    --
1775    -- set accounting line type info
1776    --
1777    xla_ae_lines_pkg.SetAcctLineType
1778       (p_component_type             => l_component_type
1779       ,p_event_type_code            => l_event_type_code
1780       ,p_line_definition_owner_code => l_line_definition_owner_code
1781       ,p_line_definition_code       => l_line_definition_code
1782       ,p_accounting_line_code       => l_component_code
1783       ,p_accounting_line_type_code  => l_component_type_code
1784       ,p_accounting_line_appl_id    => l_component_appl_id
1785       ,p_amb_context_code           => l_amb_context_code
1786       ,p_entity_code                => l_entity_code
1787       ,p_event_class_code           => l_event_class_code);
1788    --
1789    -- set accounting class
1790    --
1791    xla_ae_lines_pkg.SetAcctClass(
1792            p_accounting_class_code  => 'REQUISITION'
1793          , p_ae_header_id           => l_ae_header_id
1794          );
1795 
1796    --
1797    -- set rounding class
1798    --
1799    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
1800                       'REQUISITION';
1801 
1802    --
1803    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
1804    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
1805    --
1806    -- bulk performance
1807    --
1808    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
1809 
1810    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
1811       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
1812 
1813    -- 4955764
1814    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
1815       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
1816 
1817    -- 4458381 Public Sector Enh
1818       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
1819    --
1820    -- set accounting attributes for the line type
1821    --
1822    l_entered_amt_idx := 3;
1823    l_accted_amt_idx  := 8;
1824    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
1825    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
1826    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_8);
1827    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
1828    l_rec_acct_attrs.array_char_value(2)  := p_source_9;
1829    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
1830    l_rec_acct_attrs.array_num_value(3)  := p_source_10;
1831    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
1832    l_rec_acct_attrs.array_char_value(4)  := p_source_11;
1833    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
1834    l_rec_acct_attrs.array_date_value(5)  := p_source_12;
1835    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
1836    l_rec_acct_attrs.array_num_value(6)  := p_source_13;
1837    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
1838    l_rec_acct_attrs.array_char_value(7)  := p_source_14;
1839    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
1840    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
1841 
1842    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
1843    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
1844 
1845    ---------------------------------------------------------------------------------------------------------------
1846    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
1847    ---------------------------------------------------------------------------------------------------------------
1848    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
1849 
1850    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1851    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
1852 
1853    IF xla_accounting_cache_pkg.GetValueChar
1854          (p_source_code         => 'LEDGER_CATEGORY_CODE'
1855          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
1856    AND l_bflow_method_code = 'PRIOR_ENTRY'
1857 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
1858    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
1859          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
1860        )
1861    THEN
1862          xla_ae_lines_pkg.BflowUpgEntry
1863            (p_business_method_code    => l_bflow_method_code
1864            ,p_business_class_code     => l_bflow_class_code
1865            ,p_balance_type            => l_balance_type_code);
1866    ELSE
1867       NULL;
1868 -- No business flow processing for business flow method of NONE.
1869    END IF;
1870 
1871    --
1872    -- call analytical criteria
1873    --
1874    
1875    --
1876    -- call description
1877    --
1878    -- No description or it is inherited.
1879    --
1880    -- call ADRs
1881    -- Bug 4922099
1882    --
1883    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
1884         (NVL(l_actual_upg_option, 'N') = 'O') OR
1885         (NVL(l_enc_upg_option, 'N') = 'O')
1886       )
1887    THEN
1888    NULL;
1889    --
1890    --
1891    
1892   l_ccid := AcctDerRule_2(
1893            p_application_id           => p_application_id
1894          , p_ae_header_id             => l_ae_header_id 
1895 , p_source_6 => p_source_6
1896          , x_transaction_coa_id       => l_adr_transaction_coa_id
1897          , x_accounting_coa_id        => l_adr_accounting_coa_id
1898          , x_value_type_code          => l_adr_value_type_code
1899          , p_side                     => 'NA'
1900    );
1901 
1902    xla_ae_lines_pkg.set_ccid(
1903     p_code_combination_id          => l_ccid
1904   , p_value_type_code              => l_adr_value_type_code
1905   , p_transaction_coa_id           => l_adr_transaction_coa_id
1906   , p_accounting_coa_id            => l_adr_accounting_coa_id
1907   , p_adr_code                     => 'CST_DEFAULT'
1908   , p_adr_type_code                => 'S'
1909   , p_component_type               => l_component_type
1910   , p_component_code               => l_component_code
1911   , p_component_type_code          => l_component_type_code
1912   , p_component_appl_id            => l_component_appl_id
1913   , p_amb_context_code             => l_amb_context_code
1914   , p_side                         => 'NA'
1915   );
1916 
1917 
1918    --
1919    --
1920    END IF;
1921    --
1922    -- Bug 4922099
1923    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
1924           (NVL(l_enc_upg_option, 'N') = 'O')
1925         ) AND
1926         (l_bflow_method_code = 'PRIOR_ENTRY')
1927       )
1928    THEN
1929       IF
1930       --
1931       1 = 2
1932       --
1933       THEN
1934       xla_accounting_err_pkg.build_message
1935                                     (p_appli_s_name            => 'XLA'
1936                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1937                                     ,p_token_1                 => 'LINE_NUMBER'
1938                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
1939                                     ,p_token_2                 => 'LINE_TYPE_NAME'
1940                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
1941                                                                              l_component_type
1942                                                                             ,l_component_code
1943                                                                             ,l_component_type_code
1944                                                                             ,l_component_appl_id
1945                                                                             ,l_amb_context_code
1946                                                                             ,l_entity_code
1947                                                                             ,l_event_class_code
1948                                                                            )
1949                                     ,p_token_3                 => 'OWNER'
1950                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
1951                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
1952                                                                           ,p_lookup_code    => l_component_type_code
1953                                                                          )
1954                                     ,p_token_4                 => 'PRODUCT_NAME'
1955                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
1956                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
1957                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
1958                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
1959                                     ,p_ae_header_id            =>  NULL
1960                                        );
1961 
1962         IF (C_LEVEL_ERROR>= g_log_level) THEN
1963                  trace
1964                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
1965                       ,p_level    => C_LEVEL_ERROR
1966                       ,p_module   => l_log_module);
1967         END IF;
1968       END IF;
1969    END IF;
1970    --
1971    --
1972    ------------------------------------------------------------------------------------------------
1973    -- 4219869 Business Flow
1974    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
1975    -- Prior Entry.  Currently, the following code is always generated.
1976    ------------------------------------------------------------------------------------------------
1977    XLA_AE_LINES_PKG.ValidateCurrentLine;
1978 
1979    ------------------------------------------------------------------------------------
1980    -- 4219869 Business Flow
1981    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
1982    ------------------------------------------------------------------------------------
1983    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
1984 
1985    ----------------------------------------------------------------------------------
1986    -- 4219869 Business Flow
1987    -- Update journal entry status -- Need to generate this within IF <condition>
1988    ----------------------------------------------------------------------------------
1989    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
1990          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
1991          ,p_balance_type_code => l_balance_type_code
1992          );
1993 
1994    -------------------------------------------------------------------------------------------
1995    -- 4262811 - Generate the Accrual Reversal lines
1996    -------------------------------------------------------------------------------------------
1997    BEGIN
1998       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
1999                               (g_array_event(p_event_id).array_value_num('header_index'));
2000       IF l_acc_rev_flag IS NULL THEN
2001          l_acc_rev_flag := 'N';
2002       END IF;
2003    EXCEPTION
2004       WHEN OTHERS THEN
2005          l_acc_rev_flag := 'N';
2006    END;
2007    --
2008    IF (l_acc_rev_flag = 'Y') THEN
2009 
2010        -- 4645092  ------------------------------------------------------------------------------
2011        -- To allow MPA report to determine if it should generate report process
2012        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2013        ------------------------------------------------------------------------------------------
2014 
2015        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2016        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2017    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
2018    -- call ADRs
2019    -- Bug 4922099
2020    --
2021    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2022         (NVL(l_actual_upg_option, 'N') = 'O') OR
2023         (NVL(l_enc_upg_option, 'N') = 'O')
2024       )
2025    THEN
2026    NULL;
2027    --
2028    --
2029    
2030   l_ccid := AcctDerRule_2(
2031            p_application_id           => p_application_id
2032          , p_ae_header_id             => l_ae_header_id 
2033 , p_source_6 => p_source_6
2034          , x_transaction_coa_id       => l_adr_transaction_coa_id
2035          , x_accounting_coa_id        => l_adr_accounting_coa_id
2036          , x_value_type_code          => l_adr_value_type_code
2037          , p_side                     => 'NA'
2038    );
2039 
2040    xla_ae_lines_pkg.set_ccid(
2041     p_code_combination_id          => l_ccid
2042   , p_value_type_code              => l_adr_value_type_code
2043   , p_transaction_coa_id           => l_adr_transaction_coa_id
2044   , p_accounting_coa_id            => l_adr_accounting_coa_id
2045   , p_adr_code                     => 'CST_DEFAULT'
2046   , p_adr_type_code                => 'S'
2047   , p_component_type               => l_component_type
2048   , p_component_code               => l_component_code
2049   , p_component_type_code          => l_component_type_code
2050   , p_component_appl_id            => l_component_appl_id
2051   , p_amb_context_code             => l_amb_context_code
2052   , p_side                         => 'NA'
2053   );
2054 
2055 
2056    --
2057    --
2058    END IF;
2059 
2060        --
2061        -- Update the line information that should be overwritten
2062        --
2063        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2064                                          p_header_num   => 1);
2065        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2066 
2067        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2068 
2069        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2070           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2071        END IF;
2072 
2073       --
2074       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2075       --
2076       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2077           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2078       ELSE
2079           ---------------------------------------------------------------------------------------------------
2080           -- 4262811a Switch Sign
2081           ---------------------------------------------------------------------------------------------------
2082           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2083           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2084                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2085           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2086                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2087           -- 5132302
2088           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2089                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2090 
2091       END IF;
2092 
2093       -- 4955764
2094       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2095       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2096 
2097 
2098       XLA_AE_LINES_PKG.ValidateCurrentLine;
2099       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2100 
2101       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2102                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2103                ,p_balance_type_code => l_balance_type_code);
2104 
2105    END IF;
2106 
2107    -----------------------------------------------------------------------------------------
2108    -- 4262811 Multiperiod Accounting
2109    -----------------------------------------------------------------------------------------
2110      -- No MPA option is assigned.
2111 
2112 
2113 END IF;
2114 END IF;
2115 --
2116 
2117 --
2118 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2119    trace
2120       (p_msg      => 'END of AcctLineType_5'
2121       ,p_level    => C_LEVEL_PROCEDURE
2122       ,p_module   => l_log_module);
2123 END IF;
2124 --
2125 EXCEPTION
2126   WHEN xla_exceptions_pkg.application_exception THEN
2127       RAISE;
2128   WHEN OTHERS THEN
2129        xla_exceptions_pkg.raise_message
2130            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_5');
2131 END AcctLineType_5;
2132 --
2133 
2134 ---------------------------------------
2135 --
2136 -- PRIVATE FUNCTION
2137 --         AcctLineType_6
2138 --
2139 ---------------------------------------
2140 PROCEDURE AcctLineType_6 (
2141   p_application_id        IN NUMBER
2142  ,p_event_id              IN NUMBER
2143  ,p_calculate_acctd_flag  IN VARCHAR2
2144  ,p_calculate_g_l_flag    IN VARCHAR2
2145  ,p_actual_flag           IN OUT VARCHAR2
2146  ,p_balance_type_code     OUT VARCHAR2
2147  ,p_gain_or_loss_ref      OUT VARCHAR2
2148  
2149 --Cost Management Default Account
2150  , p_source_6            IN NUMBER
2151 --Accounting Line Type
2152  , p_source_7            IN NUMBER
2153 --DISTRIBUTION_IDENTIFIER
2154  , p_source_8            IN NUMBER
2155 --Distribution Type
2156  , p_source_9            IN VARCHAR2
2157  , p_source_9_meaning    IN VARCHAR2
2158 --Entered Amount
2159  , p_source_10            IN NUMBER
2160 --Entered Currency Code
2161  , p_source_11            IN VARCHAR2
2162 --Currency Conversion Date
2163  , p_source_12            IN DATE
2164 --Currency Conversion Rate
2165  , p_source_13            IN NUMBER
2166 --Currency Conversion Type
2167  , p_source_14            IN VARCHAR2
2168 --Accounted Amount
2169  , p_source_15            IN NUMBER
2170 )
2171 IS
2172 
2173 l_component_type              VARCHAR2(80);
2174 l_component_code              VARCHAR2(30);
2175 l_component_type_code         VARCHAR2(1);
2176 l_component_appl_id           INTEGER;
2177 l_amb_context_code            VARCHAR2(30);
2178 l_entity_code                 VARCHAR2(30);
2179 l_event_class_code            VARCHAR2(30);
2180 l_ae_header_id                NUMBER;
2181 l_event_type_code             VARCHAR2(30);
2182 l_line_definition_code        VARCHAR2(30);
2183 l_line_definition_owner_code  VARCHAR2(1);
2184 --
2185 -- adr variables
2186 l_segment                     VARCHAR2(30);
2187 l_ccid                        NUMBER;
2188 l_adr_transaction_coa_id      NUMBER;
2189 l_adr_accounting_coa_id       NUMBER;
2190 l_adr_flexfield_segment_code  VARCHAR2(30);
2191 l_adr_flex_value_set_id       NUMBER;
2192 l_adr_value_type_code         VARCHAR2(30);
2193 l_adr_value_combination_id    NUMBER;
2194 l_adr_value_segment_code      VARCHAR2(30);
2195 
2196 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2197 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2198 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2199 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2200 
2201 -- 4262811 Variables ------------------------------------------------------------------------------------------
2202 l_entered_amt_idx             NUMBER;
2203 l_accted_amt_idx              NUMBER;
2204 l_acc_rev_flag                VARCHAR2(1);
2205 l_accrual_line_num            NUMBER;
2206 l_tmp_amt                     NUMBER;
2207 l_acc_rev_natural_side_code   VARCHAR2(1);
2208 
2209 l_num_entries                 NUMBER;
2210 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2211 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2212 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2213 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2214 l_recog_line_1                NUMBER;
2215 l_recog_line_2                NUMBER;
2216 
2217 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2218 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2219 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2220 
2221 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2222 
2223 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2224 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2225 
2226 ---------------------------------------------------------------------------------------------------------------
2227 
2228 
2229 --
2230 -- bulk performance
2231 --
2232 l_balance_type_code           VARCHAR2(1);
2233 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2234 l_log_module                  VARCHAR2(240);
2235 
2236 --
2237 -- Upgrade strategy
2238 --
2239 l_actual_upg_option           VARCHAR2(1);
2240 l_enc_upg_option           VARCHAR2(1);
2241 
2242 --
2243 BEGIN
2244 --
2245 IF g_log_enabled THEN
2246       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_6';
2247 END IF;
2248 --
2249 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2250 
2251       trace
2252          (p_msg      => 'BEGIN of AcctLineType_6'
2253          ,p_level    => C_LEVEL_PROCEDURE
2254          ,p_module   => l_log_module);
2255 
2256 END IF;
2257 --
2258 l_component_type             := 'AMB_JLT';
2259 l_component_code             := 'INTERNAL_ORDER_ENC_RELIEVE';
2260 l_component_type_code        := 'S';
2261 l_component_appl_id          :=  707;
2262 l_amb_context_code           := 'DEFAULT';
2263 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
2264 l_event_class_code           := 'INT_ORDER_TO_EXP';
2265 l_event_type_code            := 'INT_ORDER_ISSUE_NO_TP';
2266 l_line_definition_owner_code := 'S';
2267 l_line_definition_code       := 'ENC_INT_ORD_ISSUE_EXP_NTP';
2268 --
2269 l_balance_type_code          := 'E';
2270 l_segment                     := NULL;
2271 l_ccid                        := NULL;
2272 l_adr_transaction_coa_id      := NULL;
2273 l_adr_accounting_coa_id       := NULL;
2274 l_adr_flexfield_segment_code  := NULL;
2275 l_adr_flex_value_set_id       := NULL;
2276 l_adr_value_type_code         := NULL;
2277 l_adr_value_combination_id    := NULL;
2278 l_adr_value_segment_code      := NULL;
2279 
2280 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
2281 l_bflow_class_code           := '';    -- 4219869 Business Flow
2282 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
2283 l_budgetary_control_flag     := 'Y';
2284 
2285 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2286 l_bflow_applied_to_amt       := NULL; -- 5132302
2287 l_entered_amt_idx            := NULL;          -- 4262811
2288 l_accted_amt_idx             := NULL;          -- 4262811
2289 l_acc_rev_flag               := NULL;          -- 4262811
2290 l_accrual_line_num           := NULL;          -- 4262811
2291 l_tmp_amt                    := NULL;          -- 4262811
2292 --
2293  
2294 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2295     l_balance_type_code <> 'B' THEN
2296 IF NVL(p_source_7,9E125) =  15
2297  THEN 
2298 
2299    --
2300    XLA_AE_LINES_PKG.SetNewLine;
2301 
2302    p_balance_type_code          := l_balance_type_code;
2303    -- set the flag so later we will know whether the gain loss line needs to be created
2304    
2305    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2306      p_actual_flag :='A';
2307    END IF;
2308 
2309    --
2310    -- bulk performance
2311    --
2312    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2313                                       p_header_num   => 0); -- 4262811
2314    --
2315    -- set accounting line options
2316    --
2317    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2318            p_natural_side_code          => 'D'
2319          , p_gain_or_loss_flag          => 'N'
2320          , p_gl_transfer_mode_code      => 'S'
2321          , p_acct_entry_type_code       => 'E'
2322          , p_switch_side_flag           => 'Y'
2323          , p_merge_duplicate_code       => 'N'
2324          );
2325    --
2326    l_acc_rev_natural_side_code := 'C';  -- 4262811
2327    -- 
2328    --
2329    -- set accounting line type info
2330    --
2331    xla_ae_lines_pkg.SetAcctLineType
2332       (p_component_type             => l_component_type
2333       ,p_event_type_code            => l_event_type_code
2334       ,p_line_definition_owner_code => l_line_definition_owner_code
2335       ,p_line_definition_code       => l_line_definition_code
2336       ,p_accounting_line_code       => l_component_code
2337       ,p_accounting_line_type_code  => l_component_type_code
2338       ,p_accounting_line_appl_id    => l_component_appl_id
2339       ,p_amb_context_code           => l_amb_context_code
2340       ,p_entity_code                => l_entity_code
2341       ,p_event_class_code           => l_event_class_code);
2342    --
2343    -- set accounting class
2344    --
2345    xla_ae_lines_pkg.SetAcctClass(
2346            p_accounting_class_code  => 'REQUISITION'
2347          , p_ae_header_id           => l_ae_header_id
2348          );
2349 
2350    --
2351    -- set rounding class
2352    --
2353    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2354                       'REQUISITION';
2355 
2356    --
2357    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2358    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2359    --
2360    -- bulk performance
2361    --
2362    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2363 
2364    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2365       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2366 
2367    -- 4955764
2368    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2369       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2370 
2371    -- 4458381 Public Sector Enh
2372       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
2373    --
2374    -- set accounting attributes for the line type
2375    --
2376    l_entered_amt_idx := 3;
2377    l_accted_amt_idx  := 8;
2378    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2379    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
2380    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_8);
2381    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
2382    l_rec_acct_attrs.array_char_value(2)  := p_source_9;
2383    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
2384    l_rec_acct_attrs.array_num_value(3)  := p_source_10;
2385    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
2386    l_rec_acct_attrs.array_char_value(4)  := p_source_11;
2387    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
2388    l_rec_acct_attrs.array_date_value(5)  := p_source_12;
2389    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
2390    l_rec_acct_attrs.array_num_value(6)  := p_source_13;
2391    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
2392    l_rec_acct_attrs.array_char_value(7)  := p_source_14;
2393    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
2394    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
2395 
2396    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2397    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2398 
2399    ---------------------------------------------------------------------------------------------------------------
2400    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
2401    ---------------------------------------------------------------------------------------------------------------
2402    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
2403 
2404    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2405    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
2406 
2407    IF xla_accounting_cache_pkg.GetValueChar
2408          (p_source_code         => 'LEDGER_CATEGORY_CODE'
2409          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
2410    AND l_bflow_method_code = 'PRIOR_ENTRY'
2411 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
2412    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
2413          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
2414        )
2415    THEN
2416          xla_ae_lines_pkg.BflowUpgEntry
2417            (p_business_method_code    => l_bflow_method_code
2418            ,p_business_class_code     => l_bflow_class_code
2419            ,p_balance_type            => l_balance_type_code);
2420    ELSE
2421       NULL;
2422 -- No business flow processing for business flow method of NONE.
2423    END IF;
2424 
2425    --
2426    -- call analytical criteria
2427    --
2428    
2429    --
2430    -- call description
2431    --
2432    -- No description or it is inherited.
2433    --
2434    -- call ADRs
2435    -- Bug 4922099
2436    --
2437    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2438         (NVL(l_actual_upg_option, 'N') = 'O') OR
2439         (NVL(l_enc_upg_option, 'N') = 'O')
2440       )
2441    THEN
2442    NULL;
2443    --
2444    --
2445    
2446   l_ccid := AcctDerRule_2(
2447            p_application_id           => p_application_id
2448          , p_ae_header_id             => l_ae_header_id 
2449 , p_source_6 => p_source_6
2450          , x_transaction_coa_id       => l_adr_transaction_coa_id
2451          , x_accounting_coa_id        => l_adr_accounting_coa_id
2452          , x_value_type_code          => l_adr_value_type_code
2453          , p_side                     => 'NA'
2454    );
2455 
2456    xla_ae_lines_pkg.set_ccid(
2457     p_code_combination_id          => l_ccid
2458   , p_value_type_code              => l_adr_value_type_code
2459   , p_transaction_coa_id           => l_adr_transaction_coa_id
2460   , p_accounting_coa_id            => l_adr_accounting_coa_id
2461   , p_adr_code                     => 'CST_DEFAULT'
2462   , p_adr_type_code                => 'S'
2463   , p_component_type               => l_component_type
2464   , p_component_code               => l_component_code
2465   , p_component_type_code          => l_component_type_code
2466   , p_component_appl_id            => l_component_appl_id
2467   , p_amb_context_code             => l_amb_context_code
2468   , p_side                         => 'NA'
2469   );
2470 
2471 
2472    --
2473    --
2474    END IF;
2475    --
2476    -- Bug 4922099
2477    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
2478           (NVL(l_enc_upg_option, 'N') = 'O')
2479         ) AND
2480         (l_bflow_method_code = 'PRIOR_ENTRY')
2481       )
2482    THEN
2483       IF
2484       --
2485       1 = 2
2486       --
2487       THEN
2488       xla_accounting_err_pkg.build_message
2489                                     (p_appli_s_name            => 'XLA'
2490                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2491                                     ,p_token_1                 => 'LINE_NUMBER'
2492                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
2493                                     ,p_token_2                 => 'LINE_TYPE_NAME'
2494                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
2495                                                                              l_component_type
2496                                                                             ,l_component_code
2497                                                                             ,l_component_type_code
2498                                                                             ,l_component_appl_id
2499                                                                             ,l_amb_context_code
2500                                                                             ,l_entity_code
2501                                                                             ,l_event_class_code
2502                                                                            )
2503                                     ,p_token_3                 => 'OWNER'
2504                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
2505                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
2506                                                                           ,p_lookup_code    => l_component_type_code
2507                                                                          )
2508                                     ,p_token_4                 => 'PRODUCT_NAME'
2509                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
2510                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
2511                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
2512                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
2513                                     ,p_ae_header_id            =>  NULL
2514                                        );
2515 
2516         IF (C_LEVEL_ERROR>= g_log_level) THEN
2517                  trace
2518                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
2519                       ,p_level    => C_LEVEL_ERROR
2520                       ,p_module   => l_log_module);
2521         END IF;
2522       END IF;
2523    END IF;
2524    --
2525    --
2526    ------------------------------------------------------------------------------------------------
2527    -- 4219869 Business Flow
2528    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
2529    -- Prior Entry.  Currently, the following code is always generated.
2530    ------------------------------------------------------------------------------------------------
2531    XLA_AE_LINES_PKG.ValidateCurrentLine;
2532 
2533    ------------------------------------------------------------------------------------
2534    -- 4219869 Business Flow
2535    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
2536    ------------------------------------------------------------------------------------
2537    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2538 
2539    ----------------------------------------------------------------------------------
2540    -- 4219869 Business Flow
2541    -- Update journal entry status -- Need to generate this within IF <condition>
2542    ----------------------------------------------------------------------------------
2543    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2544          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
2545          ,p_balance_type_code => l_balance_type_code
2546          );
2547 
2548    -------------------------------------------------------------------------------------------
2549    -- 4262811 - Generate the Accrual Reversal lines
2550    -------------------------------------------------------------------------------------------
2551    BEGIN
2552       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
2553                               (g_array_event(p_event_id).array_value_num('header_index'));
2554       IF l_acc_rev_flag IS NULL THEN
2555          l_acc_rev_flag := 'N';
2556       END IF;
2557    EXCEPTION
2558       WHEN OTHERS THEN
2559          l_acc_rev_flag := 'N';
2560    END;
2561    --
2562    IF (l_acc_rev_flag = 'Y') THEN
2563 
2564        -- 4645092  ------------------------------------------------------------------------------
2565        -- To allow MPA report to determine if it should generate report process
2566        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
2567        ------------------------------------------------------------------------------------------
2568 
2569        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
2570        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
2571    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
2572    -- call ADRs
2573    -- Bug 4922099
2574    --
2575    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
2576         (NVL(l_actual_upg_option, 'N') = 'O') OR
2577         (NVL(l_enc_upg_option, 'N') = 'O')
2578       )
2579    THEN
2580    NULL;
2581    --
2582    --
2583    
2584   l_ccid := AcctDerRule_2(
2585            p_application_id           => p_application_id
2586          , p_ae_header_id             => l_ae_header_id 
2587 , p_source_6 => p_source_6
2588          , x_transaction_coa_id       => l_adr_transaction_coa_id
2589          , x_accounting_coa_id        => l_adr_accounting_coa_id
2590          , x_value_type_code          => l_adr_value_type_code
2591          , p_side                     => 'NA'
2592    );
2593 
2594    xla_ae_lines_pkg.set_ccid(
2595     p_code_combination_id          => l_ccid
2596   , p_value_type_code              => l_adr_value_type_code
2597   , p_transaction_coa_id           => l_adr_transaction_coa_id
2598   , p_accounting_coa_id            => l_adr_accounting_coa_id
2599   , p_adr_code                     => 'CST_DEFAULT'
2600   , p_adr_type_code                => 'S'
2601   , p_component_type               => l_component_type
2602   , p_component_code               => l_component_code
2603   , p_component_type_code          => l_component_type_code
2604   , p_component_appl_id            => l_component_appl_id
2605   , p_amb_context_code             => l_amb_context_code
2606   , p_side                         => 'NA'
2607   );
2608 
2609 
2610    --
2611    --
2612    END IF;
2613 
2614        --
2615        -- Update the line information that should be overwritten
2616        --
2617        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
2618                                          p_header_num   => 1);
2619        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
2620 
2621        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
2622 
2623        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
2624           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
2625        END IF;
2626 
2627       --
2628       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
2629       --
2630       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
2631           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
2632       ELSE
2633           ---------------------------------------------------------------------------------------------------
2634           -- 4262811a Switch Sign
2635           ---------------------------------------------------------------------------------------------------
2636           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
2637           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2638                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2639           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
2640                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2641           -- 5132302
2642           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
2643                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
2644 
2645       END IF;
2646 
2647       -- 4955764
2648       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2649       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
2650 
2651 
2652       XLA_AE_LINES_PKG.ValidateCurrentLine;
2653       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
2654 
2655       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
2656                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
2657                ,p_balance_type_code => l_balance_type_code);
2658 
2659    END IF;
2660 
2661    -----------------------------------------------------------------------------------------
2662    -- 4262811 Multiperiod Accounting
2663    -----------------------------------------------------------------------------------------
2664      -- No MPA option is assigned.
2665 
2666 
2667 END IF;
2668 END IF;
2669 --
2670 
2671 --
2672 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2673    trace
2674       (p_msg      => 'END of AcctLineType_6'
2675       ,p_level    => C_LEVEL_PROCEDURE
2676       ,p_module   => l_log_module);
2677 END IF;
2678 --
2679 EXCEPTION
2680   WHEN xla_exceptions_pkg.application_exception THEN
2681       RAISE;
2682   WHEN OTHERS THEN
2683        xla_exceptions_pkg.raise_message
2684            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_6');
2685 END AcctLineType_6;
2686 --
2687 
2688 ---------------------------------------
2689 --
2690 -- PRIVATE FUNCTION
2691 --         AcctLineType_7
2692 --
2693 ---------------------------------------
2694 PROCEDURE AcctLineType_7 (
2695   p_application_id        IN NUMBER
2696  ,p_event_id              IN NUMBER
2697  ,p_calculate_acctd_flag  IN VARCHAR2
2698  ,p_calculate_g_l_flag    IN VARCHAR2
2699  ,p_actual_flag           IN OUT VARCHAR2
2700  ,p_balance_type_code     OUT VARCHAR2
2701  ,p_gain_or_loss_ref      OUT VARCHAR2
2702  
2703 --DISTRIBUTION_IDENTIFIER
2704  , p_source_8            IN NUMBER
2705 --Distribution Type
2706  , p_source_9            IN VARCHAR2
2707  , p_source_9_meaning    IN VARCHAR2
2708 --Entered Currency Code
2709  , p_source_11            IN VARCHAR2
2710 --Purchasing Encumbrance Flag
2711  , p_source_16            IN VARCHAR2
2712 --Organization Encumbrance Reversal Indicator
2713  , p_source_17            IN VARCHAR2
2714 --Applied to Application ID
2715  , p_source_19            IN NUMBER
2716 --Applied to Distribution Link Type
2717  , p_source_20            IN VARCHAR2
2718 --Applied to Entity Code
2719  , p_source_21            IN VARCHAR2
2720 --TXN_PO_DISTRIBUTION_ID
2721  , p_source_22            IN NUMBER
2722 --Applied To Purchase Document Identifier
2723  , p_source_23            IN NUMBER
2724 --PO Budget Account
2725  , p_source_24            IN NUMBER
2726 --Encumbrance Reversal Amount Entered
2727  , p_source_25            IN NUMBER
2728 --Transaction Encumbrance Reversal Amount
2729  , p_source_26            IN NUMBER
2730 --Costing Encumbrance Upgrade Option
2731  , p_source_27            IN VARCHAR2
2732 --Purchasing Encumbrance Type Identifier
2733  , p_source_28            IN NUMBER
2734 )
2735 IS
2736 
2737 l_component_type              VARCHAR2(80);
2738 l_component_code              VARCHAR2(30);
2739 l_component_type_code         VARCHAR2(1);
2740 l_component_appl_id           INTEGER;
2741 l_amb_context_code            VARCHAR2(30);
2742 l_entity_code                 VARCHAR2(30);
2743 l_event_class_code            VARCHAR2(30);
2744 l_ae_header_id                NUMBER;
2745 l_event_type_code             VARCHAR2(30);
2746 l_line_definition_code        VARCHAR2(30);
2747 l_line_definition_owner_code  VARCHAR2(1);
2748 --
2749 -- adr variables
2750 l_segment                     VARCHAR2(30);
2751 l_ccid                        NUMBER;
2752 l_adr_transaction_coa_id      NUMBER;
2753 l_adr_accounting_coa_id       NUMBER;
2754 l_adr_flexfield_segment_code  VARCHAR2(30);
2755 l_adr_flex_value_set_id       NUMBER;
2756 l_adr_value_type_code         VARCHAR2(30);
2757 l_adr_value_combination_id    NUMBER;
2758 l_adr_value_segment_code      VARCHAR2(30);
2759 
2760 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
2761 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
2762 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
2763 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
2764 
2765 -- 4262811 Variables ------------------------------------------------------------------------------------------
2766 l_entered_amt_idx             NUMBER;
2767 l_accted_amt_idx              NUMBER;
2768 l_acc_rev_flag                VARCHAR2(1);
2769 l_accrual_line_num            NUMBER;
2770 l_tmp_amt                     NUMBER;
2771 l_acc_rev_natural_side_code   VARCHAR2(1);
2772 
2773 l_num_entries                 NUMBER;
2774 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
2775 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
2776 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
2777 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
2778 l_recog_line_1                NUMBER;
2779 l_recog_line_2                NUMBER;
2780 
2781 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
2782 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
2783 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
2784 
2785 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
2786 
2787 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
2788 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
2789 
2790 ---------------------------------------------------------------------------------------------------------------
2791 
2792 
2793 --
2794 -- bulk performance
2795 --
2796 l_balance_type_code           VARCHAR2(1);
2797 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
2798 l_log_module                  VARCHAR2(240);
2799 
2800 --
2801 -- Upgrade strategy
2802 --
2803 l_actual_upg_option           VARCHAR2(1);
2804 l_enc_upg_option           VARCHAR2(1);
2805 
2806 --
2807 BEGIN
2808 --
2809 IF g_log_enabled THEN
2810       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_7';
2811 END IF;
2812 --
2813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2814 
2815       trace
2816          (p_msg      => 'BEGIN of AcctLineType_7'
2817          ,p_level    => C_LEVEL_PROCEDURE
2818          ,p_module   => l_log_module);
2819 
2820 END IF;
2821 --
2822 l_component_type             := 'AMB_JLT';
2823 l_component_code             := 'REINSTATE_PO_ENC_ON_RFI';
2824 l_component_type_code        := 'S';
2825 l_component_appl_id          :=  707;
2826 l_amb_context_code           := 'DEFAULT';
2827 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
2828 l_event_class_code           := 'PURCHASE_ORDER';
2829 l_event_type_code            := 'LOG_PO_DEL_INV';
2830 l_line_definition_owner_code := 'S';
2831 l_line_definition_code       := 'ENC_PO_DEL_INV_LOG_DEL';
2832 --
2833 l_balance_type_code          := 'E';
2834 l_segment                     := NULL;
2835 l_ccid                        := NULL;
2836 l_adr_transaction_coa_id      := NULL;
2837 l_adr_accounting_coa_id       := NULL;
2838 l_adr_flexfield_segment_code  := NULL;
2839 l_adr_flex_value_set_id       := NULL;
2840 l_adr_value_type_code         := NULL;
2841 l_adr_value_combination_id    := NULL;
2842 l_adr_value_segment_code      := NULL;
2843 
2844 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
2845 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
2846 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
2847 l_budgetary_control_flag     := 'Y';
2848 
2849 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
2850 l_bflow_applied_to_amt       := NULL; -- 5132302
2851 l_entered_amt_idx            := NULL;          -- 4262811
2852 l_accted_amt_idx             := NULL;          -- 4262811
2853 l_acc_rev_flag               := NULL;          -- 4262811
2854 l_accrual_line_num           := NULL;          -- 4262811
2855 l_tmp_amt                    := NULL;          -- 4262811
2856 --
2857  
2858 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
2859     l_balance_type_code <> 'B' THEN
2860 IF NVL(p_source_16,'
2861 ') =  'Y' AND 
2862 NVL(p_source_17,'
2863 ') =  'Y' AND 
2864 NVL(
2865 xla_ae_sources_pkg.GetSystemSourceChar(
2866    p_source_code           => 'XLA_EVENT_TYPE_CODE'
2867  , p_source_type_code      => 'Y'
2868  , p_source_application_id =>  602
2869 ),'
2870 ') =  'RET_RI_INV'
2871  THEN 
2872 
2873    --
2874    XLA_AE_LINES_PKG.SetNewLine;
2875 
2876    p_balance_type_code          := l_balance_type_code;
2877    -- set the flag so later we will know whether the gain loss line needs to be created
2878    
2879    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
2880      p_actual_flag :='A';
2881    END IF;
2882 
2883    --
2884    -- bulk performance
2885    --
2886    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
2887                                       p_header_num   => 0); -- 4262811
2888    --
2889    -- set accounting line options
2890    --
2891    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
2892            p_natural_side_code          => 'D'
2893          , p_gain_or_loss_flag          => 'N'
2894          , p_gl_transfer_mode_code      => 'S'
2895          , p_acct_entry_type_code       => 'E'
2896          , p_switch_side_flag           => 'N'
2897          , p_merge_duplicate_code       => 'N'
2898          );
2899    --
2900    l_acc_rev_natural_side_code := 'C';  -- 4262811
2901    -- 
2902    --
2903    -- set accounting line type info
2904    --
2905    xla_ae_lines_pkg.SetAcctLineType
2906       (p_component_type             => l_component_type
2907       ,p_event_type_code            => l_event_type_code
2908       ,p_line_definition_owner_code => l_line_definition_owner_code
2909       ,p_line_definition_code       => l_line_definition_code
2910       ,p_accounting_line_code       => l_component_code
2911       ,p_accounting_line_type_code  => l_component_type_code
2912       ,p_accounting_line_appl_id    => l_component_appl_id
2913       ,p_amb_context_code           => l_amb_context_code
2914       ,p_entity_code                => l_entity_code
2915       ,p_event_class_code           => l_event_class_code);
2916    --
2917    -- set accounting class
2918    --
2919    xla_ae_lines_pkg.SetAcctClass(
2920            p_accounting_class_code  => 'PURCHASE_ORDER'
2921          , p_ae_header_id           => l_ae_header_id
2922          );
2923 
2924    --
2925    -- set rounding class
2926    --
2927    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
2928                       'PURCHASE_ORDER';
2929 
2930    --
2931    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
2932    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
2933    --
2934    -- bulk performance
2935    --
2936    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
2937 
2938    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
2939       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
2940 
2941    -- 4955764
2942    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
2943       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
2944 
2945    -- 4458381 Public Sector Enh
2946    
2947    --
2948    -- set accounting attributes for the line type
2949    --
2950    l_entered_amt_idx := 17;
2951    l_accted_amt_idx  := 19;
2952    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
2953    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
2954    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
2955    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
2956    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
2957    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
2958    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
2959    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
2960    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_22);
2961    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
2962    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
2963    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
2964    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
2965    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
2966    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
2967    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
2968    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
2969    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
2970    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
2971    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
2972    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
2973    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
2974    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
2975    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
2976    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
2977    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
2978    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
2979    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
2980    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
2981    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
2982    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
2983    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
2984    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
2985    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
2986    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
2987    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
2988    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
2989    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
2990    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
2991    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
2992    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
2993    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
2994    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
2995 
2996    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
2997    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
2998 
2999    ---------------------------------------------------------------------------------------------------------------
3000    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3001    ---------------------------------------------------------------------------------------------------------------
3002    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3003 
3004    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3005    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3006 
3007    IF xla_accounting_cache_pkg.GetValueChar
3008          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3009          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3010    AND l_bflow_method_code = 'PRIOR_ENTRY'
3011 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3012    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3013          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3014        )
3015    THEN
3016          xla_ae_lines_pkg.BflowUpgEntry
3017            (p_business_method_code    => l_bflow_method_code
3018            ,p_business_class_code     => l_bflow_class_code
3019            ,p_balance_type            => l_balance_type_code);
3020    ELSE
3021       NULL;
3022 XLA_AE_LINES_PKG.business_flow_validation(
3023                                 p_business_method_code     => l_bflow_method_code
3024                                ,p_business_class_code      => l_bflow_class_code
3025                                ,p_inherit_description_flag => l_inherit_desc_flag);
3026    END IF;
3027 
3028    --
3029    -- call analytical criteria
3030    --
3031    -- Inherited Analytical Criteria for business flow method of Prior Entry.
3032    --
3033    -- call description
3034    --
3035    -- No description or it is inherited.
3036    --
3037    -- call ADRs
3038    -- Bug 4922099
3039    --
3040    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3041         (NVL(l_actual_upg_option, 'N') = 'O') OR
3042         (NVL(l_enc_upg_option, 'N') = 'O')
3043       )
3044    THEN
3045    NULL;
3046    --
3047    --
3048    
3049    --
3050    --
3051    END IF;
3052    --
3053    -- Bug 4922099
3054    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3055           (NVL(l_enc_upg_option, 'N') = 'O')
3056         ) AND
3057         (l_bflow_method_code = 'PRIOR_ENTRY')
3058       )
3059    THEN
3060       IF
3061       --
3062       1 = 1
3063       --
3064       THEN
3065       xla_accounting_err_pkg.build_message
3066                                     (p_appli_s_name            => 'XLA'
3067                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3068                                     ,p_token_1                 => 'LINE_NUMBER'
3069                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3070                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3071                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3072                                                                              l_component_type
3073                                                                             ,l_component_code
3074                                                                             ,l_component_type_code
3075                                                                             ,l_component_appl_id
3076                                                                             ,l_amb_context_code
3077                                                                             ,l_entity_code
3078                                                                             ,l_event_class_code
3079                                                                            )
3080                                     ,p_token_3                 => 'OWNER'
3081                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3082                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3083                                                                           ,p_lookup_code    => l_component_type_code
3084                                                                          )
3085                                     ,p_token_4                 => 'PRODUCT_NAME'
3086                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3087                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3088                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3089                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3090                                     ,p_ae_header_id            =>  NULL
3091                                        );
3092 
3093         IF (C_LEVEL_ERROR>= g_log_level) THEN
3094                  trace
3095                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3096                       ,p_level    => C_LEVEL_ERROR
3097                       ,p_module   => l_log_module);
3098         END IF;
3099       END IF;
3100    END IF;
3101    --
3102    --
3103    ------------------------------------------------------------------------------------------------
3104    -- 4219869 Business Flow
3105    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3106    -- Prior Entry.  Currently, the following code is always generated.
3107    ------------------------------------------------------------------------------------------------
3108    -- No ValidateCurrentLine for business flow method of Prior Entry
3109 
3110    ------------------------------------------------------------------------------------
3111    -- 4219869 Business Flow
3112    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3113    ------------------------------------------------------------------------------------
3114    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3115 
3116    ----------------------------------------------------------------------------------
3117    -- 4219869 Business Flow
3118    -- Update journal entry status -- Need to generate this within IF <condition>
3119    ----------------------------------------------------------------------------------
3120    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3121          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3122          ,p_balance_type_code => l_balance_type_code
3123          );
3124 
3125    -------------------------------------------------------------------------------------------
3126    -- 4262811 - Generate the Accrual Reversal lines
3127    -------------------------------------------------------------------------------------------
3128    BEGIN
3129       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3130                               (g_array_event(p_event_id).array_value_num('header_index'));
3131       IF l_acc_rev_flag IS NULL THEN
3132          l_acc_rev_flag := 'N';
3133       END IF;
3134    EXCEPTION
3135       WHEN OTHERS THEN
3136          l_acc_rev_flag := 'N';
3137    END;
3138    --
3139    IF (l_acc_rev_flag = 'Y') THEN
3140 
3141        -- 4645092  ------------------------------------------------------------------------------
3142        -- To allow MPA report to determine if it should generate report process
3143        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3144        ------------------------------------------------------------------------------------------
3145 
3146        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3147        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3148    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
3149    -- call ADRs
3150    -- Bug 4922099
3151    --
3152    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3153         (NVL(l_actual_upg_option, 'N') = 'O') OR
3154         (NVL(l_enc_upg_option, 'N') = 'O')
3155       )
3156    THEN
3157    NULL;
3158    --
3159    --
3160    
3161    --
3162    --
3163    END IF;
3164 
3165        --
3166        -- Update the line information that should be overwritten
3167        --
3168        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3169                                          p_header_num   => 1);
3170        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3171 
3172        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3173 
3174        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3175           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3176        END IF;
3177 
3178       --
3179       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3180       --
3181       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3182           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3183       ELSE
3184           ---------------------------------------------------------------------------------------------------
3185           -- 4262811a Switch Sign
3186           ---------------------------------------------------------------------------------------------------
3187           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3188           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3189                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3190           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3191                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3192           -- 5132302
3193           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3194                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3195 
3196       END IF;
3197 
3198       -- 4955764
3199       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3200       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3201 
3202 
3203       XLA_AE_LINES_PKG.ValidateCurrentLine;
3204       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3205 
3206       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3207                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3208                ,p_balance_type_code => l_balance_type_code);
3209 
3210    END IF;
3211 
3212    -----------------------------------------------------------------------------------------
3213    -- 4262811 Multiperiod Accounting
3214    -----------------------------------------------------------------------------------------
3215      -- No MPA option is assigned.
3216 
3217 
3218 END IF;
3219 END IF;
3220 --
3221 
3222 --
3223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3224    trace
3225       (p_msg      => 'END of AcctLineType_7'
3226       ,p_level    => C_LEVEL_PROCEDURE
3227       ,p_module   => l_log_module);
3228 END IF;
3229 --
3230 EXCEPTION
3231   WHEN xla_exceptions_pkg.application_exception THEN
3232       RAISE;
3233   WHEN OTHERS THEN
3234        xla_exceptions_pkg.raise_message
3235            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_7');
3236 END AcctLineType_7;
3237 --
3238 
3239 ---------------------------------------
3240 --
3241 -- PRIVATE FUNCTION
3242 --         AcctLineType_8
3243 --
3244 ---------------------------------------
3245 PROCEDURE AcctLineType_8 (
3246   p_application_id        IN NUMBER
3247  ,p_event_id              IN NUMBER
3248  ,p_calculate_acctd_flag  IN VARCHAR2
3249  ,p_calculate_g_l_flag    IN VARCHAR2
3250  ,p_actual_flag           IN OUT VARCHAR2
3251  ,p_balance_type_code     OUT VARCHAR2
3252  ,p_gain_or_loss_ref      OUT VARCHAR2
3253  
3254 --DISTRIBUTION_IDENTIFIER
3255  , p_source_8            IN NUMBER
3256 --Distribution Type
3257  , p_source_9            IN VARCHAR2
3258  , p_source_9_meaning    IN VARCHAR2
3259 --Entered Currency Code
3260  , p_source_11            IN VARCHAR2
3261 --Purchasing Encumbrance Flag
3262  , p_source_16            IN VARCHAR2
3263 --Organization Encumbrance Reversal Indicator
3264  , p_source_17            IN VARCHAR2
3265 --Applied to Application ID
3266  , p_source_19            IN NUMBER
3267 --Applied to Distribution Link Type
3268  , p_source_20            IN VARCHAR2
3269 --Applied to Entity Code
3270  , p_source_21            IN VARCHAR2
3271 --TXN_PO_DISTRIBUTION_ID
3272  , p_source_22            IN NUMBER
3273 --Applied To Purchase Document Identifier
3274  , p_source_23            IN NUMBER
3275 --PO Budget Account
3276  , p_source_24            IN NUMBER
3277 --Encumbrance Reversal Amount Entered
3278  , p_source_25            IN NUMBER
3279 --Transaction Encumbrance Reversal Amount
3280  , p_source_26            IN NUMBER
3281 --Costing Encumbrance Upgrade Option
3282  , p_source_27            IN VARCHAR2
3283 --Purchasing Encumbrance Type Identifier
3284  , p_source_28            IN NUMBER
3285 )
3286 IS
3287 
3288 l_component_type              VARCHAR2(80);
3289 l_component_code              VARCHAR2(30);
3290 l_component_type_code         VARCHAR2(1);
3291 l_component_appl_id           INTEGER;
3292 l_amb_context_code            VARCHAR2(30);
3293 l_entity_code                 VARCHAR2(30);
3294 l_event_class_code            VARCHAR2(30);
3295 l_ae_header_id                NUMBER;
3296 l_event_type_code             VARCHAR2(30);
3297 l_line_definition_code        VARCHAR2(30);
3298 l_line_definition_owner_code  VARCHAR2(1);
3299 --
3300 -- adr variables
3301 l_segment                     VARCHAR2(30);
3302 l_ccid                        NUMBER;
3303 l_adr_transaction_coa_id      NUMBER;
3304 l_adr_accounting_coa_id       NUMBER;
3305 l_adr_flexfield_segment_code  VARCHAR2(30);
3306 l_adr_flex_value_set_id       NUMBER;
3307 l_adr_value_type_code         VARCHAR2(30);
3308 l_adr_value_combination_id    NUMBER;
3309 l_adr_value_segment_code      VARCHAR2(30);
3310 
3311 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3312 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3313 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3314 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3315 
3316 -- 4262811 Variables ------------------------------------------------------------------------------------------
3317 l_entered_amt_idx             NUMBER;
3318 l_accted_amt_idx              NUMBER;
3319 l_acc_rev_flag                VARCHAR2(1);
3320 l_accrual_line_num            NUMBER;
3321 l_tmp_amt                     NUMBER;
3322 l_acc_rev_natural_side_code   VARCHAR2(1);
3323 
3324 l_num_entries                 NUMBER;
3325 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3326 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3327 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3328 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3329 l_recog_line_1                NUMBER;
3330 l_recog_line_2                NUMBER;
3331 
3332 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3333 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3334 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3335 
3336 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3337 
3338 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3339 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3340 
3341 ---------------------------------------------------------------------------------------------------------------
3342 
3343 
3344 --
3345 -- bulk performance
3346 --
3347 l_balance_type_code           VARCHAR2(1);
3348 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3349 l_log_module                  VARCHAR2(240);
3350 
3351 --
3352 -- Upgrade strategy
3353 --
3354 l_actual_upg_option           VARCHAR2(1);
3355 l_enc_upg_option           VARCHAR2(1);
3356 
3357 --
3358 BEGIN
3359 --
3360 IF g_log_enabled THEN
3361       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_8';
3362 END IF;
3363 --
3364 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3365 
3366       trace
3367          (p_msg      => 'BEGIN of AcctLineType_8'
3368          ,p_level    => C_LEVEL_PROCEDURE
3369          ,p_module   => l_log_module);
3370 
3371 END IF;
3372 --
3373 l_component_type             := 'AMB_JLT';
3374 l_component_code             := 'REINSTATE_PO_ENC_ON_RFI';
3375 l_component_type_code        := 'S';
3376 l_component_appl_id          :=  707;
3377 l_amb_context_code           := 'DEFAULT';
3378 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
3379 l_event_class_code           := 'PURCHASE_ORDER';
3380 l_event_type_code            := 'PO_DEL_ADJ';
3381 l_line_definition_owner_code := 'S';
3382 l_line_definition_code       := 'ENC_PO_DEL_INV_DEL_ADJ';
3383 --
3384 l_balance_type_code          := 'E';
3385 l_segment                     := NULL;
3386 l_ccid                        := NULL;
3387 l_adr_transaction_coa_id      := NULL;
3388 l_adr_accounting_coa_id       := NULL;
3389 l_adr_flexfield_segment_code  := NULL;
3390 l_adr_flex_value_set_id       := NULL;
3391 l_adr_value_type_code         := NULL;
3392 l_adr_value_combination_id    := NULL;
3393 l_adr_value_segment_code      := NULL;
3394 
3395 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
3396 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
3397 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
3398 l_budgetary_control_flag     := 'Y';
3399 
3400 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3401 l_bflow_applied_to_amt       := NULL; -- 5132302
3402 l_entered_amt_idx            := NULL;          -- 4262811
3403 l_accted_amt_idx             := NULL;          -- 4262811
3404 l_acc_rev_flag               := NULL;          -- 4262811
3405 l_accrual_line_num           := NULL;          -- 4262811
3406 l_tmp_amt                    := NULL;          -- 4262811
3407 --
3408  
3409 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3410     l_balance_type_code <> 'B' THEN
3411 IF NVL(p_source_16,'
3412 ') =  'Y' AND 
3413 NVL(p_source_17,'
3414 ') =  'Y' AND 
3415 NVL(
3416 xla_ae_sources_pkg.GetSystemSourceChar(
3417    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3418  , p_source_type_code      => 'Y'
3419  , p_source_application_id =>  602
3420 ),'
3421 ') =  'RET_RI_INV'
3422  THEN 
3423 
3424    --
3425    XLA_AE_LINES_PKG.SetNewLine;
3426 
3427    p_balance_type_code          := l_balance_type_code;
3428    -- set the flag so later we will know whether the gain loss line needs to be created
3429    
3430    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3431      p_actual_flag :='A';
3432    END IF;
3433 
3434    --
3435    -- bulk performance
3436    --
3437    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3438                                       p_header_num   => 0); -- 4262811
3439    --
3440    -- set accounting line options
3441    --
3442    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3443            p_natural_side_code          => 'D'
3444          , p_gain_or_loss_flag          => 'N'
3445          , p_gl_transfer_mode_code      => 'S'
3446          , p_acct_entry_type_code       => 'E'
3447          , p_switch_side_flag           => 'N'
3448          , p_merge_duplicate_code       => 'N'
3449          );
3450    --
3451    l_acc_rev_natural_side_code := 'C';  -- 4262811
3452    -- 
3453    --
3454    -- set accounting line type info
3455    --
3456    xla_ae_lines_pkg.SetAcctLineType
3457       (p_component_type             => l_component_type
3458       ,p_event_type_code            => l_event_type_code
3459       ,p_line_definition_owner_code => l_line_definition_owner_code
3460       ,p_line_definition_code       => l_line_definition_code
3461       ,p_accounting_line_code       => l_component_code
3462       ,p_accounting_line_type_code  => l_component_type_code
3463       ,p_accounting_line_appl_id    => l_component_appl_id
3464       ,p_amb_context_code           => l_amb_context_code
3465       ,p_entity_code                => l_entity_code
3466       ,p_event_class_code           => l_event_class_code);
3467    --
3468    -- set accounting class
3469    --
3470    xla_ae_lines_pkg.SetAcctClass(
3471            p_accounting_class_code  => 'PURCHASE_ORDER'
3472          , p_ae_header_id           => l_ae_header_id
3473          );
3474 
3475    --
3476    -- set rounding class
3477    --
3478    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3479                       'PURCHASE_ORDER';
3480 
3481    --
3482    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3483    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3484    --
3485    -- bulk performance
3486    --
3487    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3488 
3489    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3490       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3491 
3492    -- 4955764
3493    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3494       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3495 
3496    -- 4458381 Public Sector Enh
3497    
3498    --
3499    -- set accounting attributes for the line type
3500    --
3501    l_entered_amt_idx := 17;
3502    l_accted_amt_idx  := 19;
3503    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3504    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
3505    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
3506    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
3507    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
3508    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
3509    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
3510    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
3511    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_22);
3512    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
3513    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
3514    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
3515    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
3516    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
3517    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
3518    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
3519    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
3520    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
3521    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
3522    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
3523    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
3524    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
3525    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
3526    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
3527    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
3528    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
3529    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
3530    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
3531    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
3532    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
3533    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
3534    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
3535    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
3536    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
3537    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
3538    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
3539    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
3540    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
3541    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
3542    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
3543    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
3544    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
3545    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
3546 
3547    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3548    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3549 
3550    ---------------------------------------------------------------------------------------------------------------
3551    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3552    ---------------------------------------------------------------------------------------------------------------
3553    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3554 
3555    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3556    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3557 
3558    IF xla_accounting_cache_pkg.GetValueChar
3559          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3560          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3561    AND l_bflow_method_code = 'PRIOR_ENTRY'
3562 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3563    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3564          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3565        )
3566    THEN
3567          xla_ae_lines_pkg.BflowUpgEntry
3568            (p_business_method_code    => l_bflow_method_code
3569            ,p_business_class_code     => l_bflow_class_code
3570            ,p_balance_type            => l_balance_type_code);
3571    ELSE
3572       NULL;
3573 XLA_AE_LINES_PKG.business_flow_validation(
3574                                 p_business_method_code     => l_bflow_method_code
3575                                ,p_business_class_code      => l_bflow_class_code
3576                                ,p_inherit_description_flag => l_inherit_desc_flag);
3577    END IF;
3578 
3579    --
3580    -- call analytical criteria
3581    --
3582    -- Inherited Analytical Criteria for business flow method of Prior Entry.
3583    --
3584    -- call description
3585    --
3586    -- No description or it is inherited.
3587    --
3588    -- call ADRs
3589    -- Bug 4922099
3590    --
3591    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3592         (NVL(l_actual_upg_option, 'N') = 'O') OR
3593         (NVL(l_enc_upg_option, 'N') = 'O')
3594       )
3595    THEN
3596    NULL;
3597    --
3598    --
3599    
3600    --
3601    --
3602    END IF;
3603    --
3604    -- Bug 4922099
3605    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3606           (NVL(l_enc_upg_option, 'N') = 'O')
3607         ) AND
3608         (l_bflow_method_code = 'PRIOR_ENTRY')
3609       )
3610    THEN
3611       IF
3612       --
3613       1 = 1
3614       --
3615       THEN
3616       xla_accounting_err_pkg.build_message
3617                                     (p_appli_s_name            => 'XLA'
3618                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3619                                     ,p_token_1                 => 'LINE_NUMBER'
3620                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3621                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3622                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3623                                                                              l_component_type
3624                                                                             ,l_component_code
3625                                                                             ,l_component_type_code
3626                                                                             ,l_component_appl_id
3627                                                                             ,l_amb_context_code
3628                                                                             ,l_entity_code
3629                                                                             ,l_event_class_code
3630                                                                            )
3631                                     ,p_token_3                 => 'OWNER'
3632                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3633                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3634                                                                           ,p_lookup_code    => l_component_type_code
3635                                                                          )
3636                                     ,p_token_4                 => 'PRODUCT_NAME'
3637                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3638                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3639                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3640                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3641                                     ,p_ae_header_id            =>  NULL
3642                                        );
3643 
3644         IF (C_LEVEL_ERROR>= g_log_level) THEN
3645                  trace
3646                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3647                       ,p_level    => C_LEVEL_ERROR
3648                       ,p_module   => l_log_module);
3649         END IF;
3650       END IF;
3651    END IF;
3652    --
3653    --
3654    ------------------------------------------------------------------------------------------------
3655    -- 4219869 Business Flow
3656    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3657    -- Prior Entry.  Currently, the following code is always generated.
3658    ------------------------------------------------------------------------------------------------
3659    -- No ValidateCurrentLine for business flow method of Prior Entry
3660 
3661    ------------------------------------------------------------------------------------
3662    -- 4219869 Business Flow
3663    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3664    ------------------------------------------------------------------------------------
3665    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3666 
3667    ----------------------------------------------------------------------------------
3668    -- 4219869 Business Flow
3669    -- Update journal entry status -- Need to generate this within IF <condition>
3670    ----------------------------------------------------------------------------------
3671    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3672          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3673          ,p_balance_type_code => l_balance_type_code
3674          );
3675 
3676    -------------------------------------------------------------------------------------------
3677    -- 4262811 - Generate the Accrual Reversal lines
3678    -------------------------------------------------------------------------------------------
3679    BEGIN
3680       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3681                               (g_array_event(p_event_id).array_value_num('header_index'));
3682       IF l_acc_rev_flag IS NULL THEN
3683          l_acc_rev_flag := 'N';
3684       END IF;
3685    EXCEPTION
3686       WHEN OTHERS THEN
3687          l_acc_rev_flag := 'N';
3688    END;
3689    --
3690    IF (l_acc_rev_flag = 'Y') THEN
3691 
3692        -- 4645092  ------------------------------------------------------------------------------
3693        -- To allow MPA report to determine if it should generate report process
3694        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3695        ------------------------------------------------------------------------------------------
3696 
3697        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3698        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3699    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
3700    -- call ADRs
3701    -- Bug 4922099
3702    --
3703    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3704         (NVL(l_actual_upg_option, 'N') = 'O') OR
3705         (NVL(l_enc_upg_option, 'N') = 'O')
3706       )
3707    THEN
3708    NULL;
3709    --
3710    --
3711    
3712    --
3713    --
3714    END IF;
3715 
3716        --
3717        -- Update the line information that should be overwritten
3718        --
3719        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3720                                          p_header_num   => 1);
3721        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3722 
3723        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3724 
3725        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3726           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3727        END IF;
3728 
3729       --
3730       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3731       --
3732       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3733           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3734       ELSE
3735           ---------------------------------------------------------------------------------------------------
3736           -- 4262811a Switch Sign
3737           ---------------------------------------------------------------------------------------------------
3738           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3739           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3740                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3741           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3742                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3743           -- 5132302
3744           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3745                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3746 
3747       END IF;
3748 
3749       -- 4955764
3750       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3751       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3752 
3753 
3754       XLA_AE_LINES_PKG.ValidateCurrentLine;
3755       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3756 
3757       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3758                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3759                ,p_balance_type_code => l_balance_type_code);
3760 
3761    END IF;
3762 
3763    -----------------------------------------------------------------------------------------
3764    -- 4262811 Multiperiod Accounting
3765    -----------------------------------------------------------------------------------------
3766      -- No MPA option is assigned.
3767 
3768 
3769 END IF;
3770 END IF;
3771 --
3772 
3773 --
3774 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3775    trace
3776       (p_msg      => 'END of AcctLineType_8'
3777       ,p_level    => C_LEVEL_PROCEDURE
3778       ,p_module   => l_log_module);
3779 END IF;
3780 --
3781 EXCEPTION
3782   WHEN xla_exceptions_pkg.application_exception THEN
3783       RAISE;
3784   WHEN OTHERS THEN
3785        xla_exceptions_pkg.raise_message
3786            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_8');
3787 END AcctLineType_8;
3788 --
3789 
3790 ---------------------------------------
3791 --
3792 -- PRIVATE FUNCTION
3793 --         AcctLineType_9
3794 --
3795 ---------------------------------------
3796 PROCEDURE AcctLineType_9 (
3797   p_application_id        IN NUMBER
3798  ,p_event_id              IN NUMBER
3799  ,p_calculate_acctd_flag  IN VARCHAR2
3800  ,p_calculate_g_l_flag    IN VARCHAR2
3801  ,p_actual_flag           IN OUT VARCHAR2
3802  ,p_balance_type_code     OUT VARCHAR2
3803  ,p_gain_or_loss_ref      OUT VARCHAR2
3804  
3805 --DISTRIBUTION_IDENTIFIER
3806  , p_source_8            IN NUMBER
3807 --Distribution Type
3808  , p_source_9            IN VARCHAR2
3809  , p_source_9_meaning    IN VARCHAR2
3810 --Entered Currency Code
3811  , p_source_11            IN VARCHAR2
3812 --Purchasing Encumbrance Flag
3813  , p_source_16            IN VARCHAR2
3814 --Organization Encumbrance Reversal Indicator
3815  , p_source_17            IN VARCHAR2
3816 --Applied to Application ID
3817  , p_source_19            IN NUMBER
3818 --Applied to Distribution Link Type
3819  , p_source_20            IN VARCHAR2
3820 --Applied to Entity Code
3821  , p_source_21            IN VARCHAR2
3822 --TXN_PO_DISTRIBUTION_ID
3823  , p_source_22            IN NUMBER
3824 --Applied To Purchase Document Identifier
3825  , p_source_23            IN NUMBER
3826 --PO Budget Account
3827  , p_source_24            IN NUMBER
3828 --Encumbrance Reversal Amount Entered
3829  , p_source_25            IN NUMBER
3830 --Transaction Encumbrance Reversal Amount
3831  , p_source_26            IN NUMBER
3832 --Costing Encumbrance Upgrade Option
3833  , p_source_27            IN VARCHAR2
3834 --Purchasing Encumbrance Type Identifier
3835  , p_source_28            IN NUMBER
3836 )
3837 IS
3838 
3839 l_component_type              VARCHAR2(80);
3840 l_component_code              VARCHAR2(30);
3841 l_component_type_code         VARCHAR2(1);
3842 l_component_appl_id           INTEGER;
3843 l_amb_context_code            VARCHAR2(30);
3844 l_entity_code                 VARCHAR2(30);
3845 l_event_class_code            VARCHAR2(30);
3846 l_ae_header_id                NUMBER;
3847 l_event_type_code             VARCHAR2(30);
3848 l_line_definition_code        VARCHAR2(30);
3849 l_line_definition_owner_code  VARCHAR2(1);
3850 --
3851 -- adr variables
3852 l_segment                     VARCHAR2(30);
3853 l_ccid                        NUMBER;
3854 l_adr_transaction_coa_id      NUMBER;
3855 l_adr_accounting_coa_id       NUMBER;
3856 l_adr_flexfield_segment_code  VARCHAR2(30);
3857 l_adr_flex_value_set_id       NUMBER;
3858 l_adr_value_type_code         VARCHAR2(30);
3859 l_adr_value_combination_id    NUMBER;
3860 l_adr_value_segment_code      VARCHAR2(30);
3861 
3862 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3863 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3864 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3865 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3866 
3867 -- 4262811 Variables ------------------------------------------------------------------------------------------
3868 l_entered_amt_idx             NUMBER;
3869 l_accted_amt_idx              NUMBER;
3870 l_acc_rev_flag                VARCHAR2(1);
3871 l_accrual_line_num            NUMBER;
3872 l_tmp_amt                     NUMBER;
3873 l_acc_rev_natural_side_code   VARCHAR2(1);
3874 
3875 l_num_entries                 NUMBER;
3876 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3877 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3878 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3879 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3880 l_recog_line_1                NUMBER;
3881 l_recog_line_2                NUMBER;
3882 
3883 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3884 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3885 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3886 
3887 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3888 
3889 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3890 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3891 
3892 ---------------------------------------------------------------------------------------------------------------
3893 
3894 
3895 --
3896 -- bulk performance
3897 --
3898 l_balance_type_code           VARCHAR2(1);
3899 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3900 l_log_module                  VARCHAR2(240);
3901 
3902 --
3903 -- Upgrade strategy
3904 --
3905 l_actual_upg_option           VARCHAR2(1);
3906 l_enc_upg_option           VARCHAR2(1);
3907 
3908 --
3909 BEGIN
3910 --
3911 IF g_log_enabled THEN
3912       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_9';
3913 END IF;
3914 --
3915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3916 
3917       trace
3918          (p_msg      => 'BEGIN of AcctLineType_9'
3919          ,p_level    => C_LEVEL_PROCEDURE
3920          ,p_module   => l_log_module);
3921 
3922 END IF;
3923 --
3924 l_component_type             := 'AMB_JLT';
3925 l_component_code             := 'REINSTATE_PO_ENC_ON_RFI';
3926 l_component_type_code        := 'S';
3927 l_component_appl_id          :=  707;
3928 l_amb_context_code           := 'DEFAULT';
3929 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
3930 l_event_class_code           := 'PURCHASE_ORDER';
3931 l_event_type_code            := 'LOG_PO_DEL_ADJ';
3932 l_line_definition_owner_code := 'S';
3933 l_line_definition_code       := 'ENC_PO_DEL_INV_LOG_DEL_ADJ';
3934 --
3935 l_balance_type_code          := 'E';
3936 l_segment                     := NULL;
3937 l_ccid                        := NULL;
3938 l_adr_transaction_coa_id      := NULL;
3939 l_adr_accounting_coa_id       := NULL;
3940 l_adr_flexfield_segment_code  := NULL;
3941 l_adr_flex_value_set_id       := NULL;
3942 l_adr_value_type_code         := NULL;
3943 l_adr_value_combination_id    := NULL;
3944 l_adr_value_segment_code      := NULL;
3945 
3946 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
3947 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
3948 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
3949 l_budgetary_control_flag     := 'Y';
3950 
3951 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3952 l_bflow_applied_to_amt       := NULL; -- 5132302
3953 l_entered_amt_idx            := NULL;          -- 4262811
3954 l_accted_amt_idx             := NULL;          -- 4262811
3955 l_acc_rev_flag               := NULL;          -- 4262811
3956 l_accrual_line_num           := NULL;          -- 4262811
3957 l_tmp_amt                    := NULL;          -- 4262811
3958 --
3959  
3960 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3961     l_balance_type_code <> 'B' THEN
3962 IF NVL(p_source_16,'
3963 ') =  'Y' AND 
3964 NVL(p_source_17,'
3965 ') =  'Y' AND 
3966 NVL(
3967 xla_ae_sources_pkg.GetSystemSourceChar(
3968    p_source_code           => 'XLA_EVENT_TYPE_CODE'
3969  , p_source_type_code      => 'Y'
3970  , p_source_application_id =>  602
3971 ),'
3972 ') =  'RET_RI_INV'
3973  THEN 
3974 
3975    --
3976    XLA_AE_LINES_PKG.SetNewLine;
3977 
3978    p_balance_type_code          := l_balance_type_code;
3979    -- set the flag so later we will know whether the gain loss line needs to be created
3980    
3981    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3982      p_actual_flag :='A';
3983    END IF;
3984 
3985    --
3986    -- bulk performance
3987    --
3988    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3989                                       p_header_num   => 0); -- 4262811
3990    --
3991    -- set accounting line options
3992    --
3993    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3994            p_natural_side_code          => 'D'
3995          , p_gain_or_loss_flag          => 'N'
3996          , p_gl_transfer_mode_code      => 'S'
3997          , p_acct_entry_type_code       => 'E'
3998          , p_switch_side_flag           => 'N'
3999          , p_merge_duplicate_code       => 'N'
4000          );
4001    --
4002    l_acc_rev_natural_side_code := 'C';  -- 4262811
4003    -- 
4004    --
4005    -- set accounting line type info
4006    --
4007    xla_ae_lines_pkg.SetAcctLineType
4008       (p_component_type             => l_component_type
4009       ,p_event_type_code            => l_event_type_code
4010       ,p_line_definition_owner_code => l_line_definition_owner_code
4011       ,p_line_definition_code       => l_line_definition_code
4012       ,p_accounting_line_code       => l_component_code
4013       ,p_accounting_line_type_code  => l_component_type_code
4014       ,p_accounting_line_appl_id    => l_component_appl_id
4015       ,p_amb_context_code           => l_amb_context_code
4016       ,p_entity_code                => l_entity_code
4017       ,p_event_class_code           => l_event_class_code);
4018    --
4019    -- set accounting class
4020    --
4021    xla_ae_lines_pkg.SetAcctClass(
4022            p_accounting_class_code  => 'PURCHASE_ORDER'
4023          , p_ae_header_id           => l_ae_header_id
4024          );
4025 
4026    --
4027    -- set rounding class
4028    --
4029    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4030                       'PURCHASE_ORDER';
4031 
4032    --
4033    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4034    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4035    --
4036    -- bulk performance
4037    --
4038    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4039 
4040    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4041       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4042 
4043    -- 4955764
4044    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4045       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4046 
4047    -- 4458381 Public Sector Enh
4048    
4049    --
4050    -- set accounting attributes for the line type
4051    --
4052    l_entered_amt_idx := 17;
4053    l_accted_amt_idx  := 19;
4054    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4055    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4056    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
4057    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4058    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
4059    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4060    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
4061    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4062    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_22);
4063    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4064    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
4065    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4066    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
4067    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4068    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
4069    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
4070    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
4071    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
4072    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
4073    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
4074    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
4075    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
4076    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
4077    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
4078    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
4079    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
4080    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
4081    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
4082    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
4083    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
4084    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
4085    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
4086    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
4087    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
4088    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
4089    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
4090    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
4091    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
4092    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
4093    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
4094    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
4095    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
4096    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
4097 
4098    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4099    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4100 
4101    ---------------------------------------------------------------------------------------------------------------
4102    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4103    ---------------------------------------------------------------------------------------------------------------
4104    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4105 
4106    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4107    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4108 
4109    IF xla_accounting_cache_pkg.GetValueChar
4110          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4111          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4112    AND l_bflow_method_code = 'PRIOR_ENTRY'
4113 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4114    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4115          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4116        )
4117    THEN
4118          xla_ae_lines_pkg.BflowUpgEntry
4119            (p_business_method_code    => l_bflow_method_code
4120            ,p_business_class_code     => l_bflow_class_code
4121            ,p_balance_type            => l_balance_type_code);
4122    ELSE
4123       NULL;
4124 XLA_AE_LINES_PKG.business_flow_validation(
4125                                 p_business_method_code     => l_bflow_method_code
4126                                ,p_business_class_code      => l_bflow_class_code
4127                                ,p_inherit_description_flag => l_inherit_desc_flag);
4128    END IF;
4129 
4130    --
4131    -- call analytical criteria
4132    --
4133    -- Inherited Analytical Criteria for business flow method of Prior Entry.
4134    --
4135    -- call description
4136    --
4137    -- No description or it is inherited.
4138    --
4139    -- call ADRs
4140    -- Bug 4922099
4141    --
4142    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4143         (NVL(l_actual_upg_option, 'N') = 'O') OR
4144         (NVL(l_enc_upg_option, 'N') = 'O')
4145       )
4146    THEN
4147    NULL;
4148    --
4149    --
4150    
4151    --
4152    --
4153    END IF;
4154    --
4155    -- Bug 4922099
4156    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4157           (NVL(l_enc_upg_option, 'N') = 'O')
4158         ) AND
4159         (l_bflow_method_code = 'PRIOR_ENTRY')
4160       )
4161    THEN
4162       IF
4163       --
4164       1 = 1
4165       --
4166       THEN
4167       xla_accounting_err_pkg.build_message
4168                                     (p_appli_s_name            => 'XLA'
4169                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4170                                     ,p_token_1                 => 'LINE_NUMBER'
4171                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4172                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4173                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4174                                                                              l_component_type
4175                                                                             ,l_component_code
4176                                                                             ,l_component_type_code
4177                                                                             ,l_component_appl_id
4178                                                                             ,l_amb_context_code
4179                                                                             ,l_entity_code
4180                                                                             ,l_event_class_code
4181                                                                            )
4182                                     ,p_token_3                 => 'OWNER'
4183                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4184                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4185                                                                           ,p_lookup_code    => l_component_type_code
4186                                                                          )
4187                                     ,p_token_4                 => 'PRODUCT_NAME'
4188                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4189                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4190                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4191                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4192                                     ,p_ae_header_id            =>  NULL
4193                                        );
4194 
4195         IF (C_LEVEL_ERROR>= g_log_level) THEN
4196                  trace
4197                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4198                       ,p_level    => C_LEVEL_ERROR
4199                       ,p_module   => l_log_module);
4200         END IF;
4201       END IF;
4202    END IF;
4203    --
4204    --
4205    ------------------------------------------------------------------------------------------------
4206    -- 4219869 Business Flow
4207    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4208    -- Prior Entry.  Currently, the following code is always generated.
4209    ------------------------------------------------------------------------------------------------
4210    -- No ValidateCurrentLine for business flow method of Prior Entry
4211 
4212    ------------------------------------------------------------------------------------
4213    -- 4219869 Business Flow
4214    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4215    ------------------------------------------------------------------------------------
4216    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4217 
4218    ----------------------------------------------------------------------------------
4219    -- 4219869 Business Flow
4220    -- Update journal entry status -- Need to generate this within IF <condition>
4221    ----------------------------------------------------------------------------------
4222    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4223          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4224          ,p_balance_type_code => l_balance_type_code
4225          );
4226 
4227    -------------------------------------------------------------------------------------------
4228    -- 4262811 - Generate the Accrual Reversal lines
4229    -------------------------------------------------------------------------------------------
4230    BEGIN
4231       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4232                               (g_array_event(p_event_id).array_value_num('header_index'));
4233       IF l_acc_rev_flag IS NULL THEN
4234          l_acc_rev_flag := 'N';
4235       END IF;
4236    EXCEPTION
4237       WHEN OTHERS THEN
4238          l_acc_rev_flag := 'N';
4239    END;
4240    --
4241    IF (l_acc_rev_flag = 'Y') THEN
4242 
4243        -- 4645092  ------------------------------------------------------------------------------
4244        -- To allow MPA report to determine if it should generate report process
4245        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4246        ------------------------------------------------------------------------------------------
4247 
4248        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4249        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4250    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
4251    -- call ADRs
4252    -- Bug 4922099
4253    --
4254    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4255         (NVL(l_actual_upg_option, 'N') = 'O') OR
4256         (NVL(l_enc_upg_option, 'N') = 'O')
4257       )
4258    THEN
4259    NULL;
4260    --
4261    --
4262    
4263    --
4264    --
4265    END IF;
4266 
4267        --
4268        -- Update the line information that should be overwritten
4269        --
4270        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4271                                          p_header_num   => 1);
4272        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4273 
4274        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4275 
4276        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4277           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4278        END IF;
4279 
4280       --
4281       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4282       --
4283       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4284           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4285       ELSE
4286           ---------------------------------------------------------------------------------------------------
4287           -- 4262811a Switch Sign
4288           ---------------------------------------------------------------------------------------------------
4289           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4290           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4291                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4292           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4293                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4294           -- 5132302
4295           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4296                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4297 
4298       END IF;
4299 
4300       -- 4955764
4301       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4302       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4303 
4304 
4305       XLA_AE_LINES_PKG.ValidateCurrentLine;
4306       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4307 
4308       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4309                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4310                ,p_balance_type_code => l_balance_type_code);
4311 
4312    END IF;
4313 
4314    -----------------------------------------------------------------------------------------
4315    -- 4262811 Multiperiod Accounting
4316    -----------------------------------------------------------------------------------------
4317      -- No MPA option is assigned.
4318 
4319 
4320 END IF;
4321 END IF;
4322 --
4323 
4324 --
4325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4326    trace
4327       (p_msg      => 'END of AcctLineType_9'
4328       ,p_level    => C_LEVEL_PROCEDURE
4329       ,p_module   => l_log_module);
4330 END IF;
4331 --
4332 EXCEPTION
4333   WHEN xla_exceptions_pkg.application_exception THEN
4334       RAISE;
4335   WHEN OTHERS THEN
4336        xla_exceptions_pkg.raise_message
4337            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_9');
4338 END AcctLineType_9;
4339 --
4340 
4341 ---------------------------------------
4342 --
4343 -- PRIVATE FUNCTION
4344 --         AcctLineType_10
4345 --
4346 ---------------------------------------
4347 PROCEDURE AcctLineType_10 (
4348   p_application_id        IN NUMBER
4349  ,p_event_id              IN NUMBER
4350  ,p_calculate_acctd_flag  IN VARCHAR2
4351  ,p_calculate_g_l_flag    IN VARCHAR2
4352  ,p_actual_flag           IN OUT VARCHAR2
4353  ,p_balance_type_code     OUT VARCHAR2
4354  ,p_gain_or_loss_ref      OUT VARCHAR2
4355  
4356 --DISTRIBUTION_IDENTIFIER
4357  , p_source_8            IN NUMBER
4358 --Distribution Type
4359  , p_source_9            IN VARCHAR2
4360  , p_source_9_meaning    IN VARCHAR2
4361 --Entered Currency Code
4362  , p_source_11            IN VARCHAR2
4363 --Purchasing Encumbrance Flag
4364  , p_source_16            IN VARCHAR2
4365 --Organization Encumbrance Reversal Indicator
4366  , p_source_17            IN VARCHAR2
4367 --Applied to Application ID
4368  , p_source_19            IN NUMBER
4369 --Applied to Distribution Link Type
4370  , p_source_20            IN VARCHAR2
4371 --Applied to Entity Code
4372  , p_source_21            IN VARCHAR2
4373 --TXN_PO_DISTRIBUTION_ID
4374  , p_source_22            IN NUMBER
4375 --Applied To Purchase Document Identifier
4376  , p_source_23            IN NUMBER
4377 --PO Budget Account
4378  , p_source_24            IN NUMBER
4379 --Encumbrance Reversal Amount Entered
4380  , p_source_25            IN NUMBER
4381 --Transaction Encumbrance Reversal Amount
4382  , p_source_26            IN NUMBER
4383 --Costing Encumbrance Upgrade Option
4384  , p_source_27            IN VARCHAR2
4385 --Purchasing Encumbrance Type Identifier
4386  , p_source_28            IN NUMBER
4387 )
4388 IS
4389 
4390 l_component_type              VARCHAR2(80);
4391 l_component_code              VARCHAR2(30);
4392 l_component_type_code         VARCHAR2(1);
4393 l_component_appl_id           INTEGER;
4394 l_amb_context_code            VARCHAR2(30);
4395 l_entity_code                 VARCHAR2(30);
4396 l_event_class_code            VARCHAR2(30);
4397 l_ae_header_id                NUMBER;
4398 l_event_type_code             VARCHAR2(30);
4399 l_line_definition_code        VARCHAR2(30);
4400 l_line_definition_owner_code  VARCHAR2(1);
4401 --
4402 -- adr variables
4403 l_segment                     VARCHAR2(30);
4404 l_ccid                        NUMBER;
4405 l_adr_transaction_coa_id      NUMBER;
4406 l_adr_accounting_coa_id       NUMBER;
4407 l_adr_flexfield_segment_code  VARCHAR2(30);
4408 l_adr_flex_value_set_id       NUMBER;
4409 l_adr_value_type_code         VARCHAR2(30);
4410 l_adr_value_combination_id    NUMBER;
4411 l_adr_value_segment_code      VARCHAR2(30);
4412 
4413 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4414 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4415 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4416 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4417 
4418 -- 4262811 Variables ------------------------------------------------------------------------------------------
4419 l_entered_amt_idx             NUMBER;
4420 l_accted_amt_idx              NUMBER;
4421 l_acc_rev_flag                VARCHAR2(1);
4422 l_accrual_line_num            NUMBER;
4423 l_tmp_amt                     NUMBER;
4424 l_acc_rev_natural_side_code   VARCHAR2(1);
4425 
4426 l_num_entries                 NUMBER;
4427 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4428 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4429 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4430 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4431 l_recog_line_1                NUMBER;
4432 l_recog_line_2                NUMBER;
4433 
4434 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4435 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4436 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4437 
4438 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4439 
4440 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4441 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4442 
4443 ---------------------------------------------------------------------------------------------------------------
4444 
4445 
4446 --
4447 -- bulk performance
4448 --
4449 l_balance_type_code           VARCHAR2(1);
4450 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4451 l_log_module                  VARCHAR2(240);
4452 
4453 --
4454 -- Upgrade strategy
4455 --
4456 l_actual_upg_option           VARCHAR2(1);
4457 l_enc_upg_option           VARCHAR2(1);
4458 
4459 --
4460 BEGIN
4461 --
4462 IF g_log_enabled THEN
4463       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_10';
4464 END IF;
4465 --
4466 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4467 
4468       trace
4469          (p_msg      => 'BEGIN of AcctLineType_10'
4470          ,p_level    => C_LEVEL_PROCEDURE
4471          ,p_module   => l_log_module);
4472 
4473 END IF;
4474 --
4475 l_component_type             := 'AMB_JLT';
4476 l_component_code             := 'REINSTATE_PO_ENC_ON_RFI';
4477 l_component_type_code        := 'S';
4478 l_component_appl_id          :=  707;
4479 l_amb_context_code           := 'DEFAULT';
4480 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
4481 l_event_class_code           := 'PURCHASE_ORDER';
4482 l_event_type_code            := 'RET_RI_INV';
4483 l_line_definition_owner_code := 'S';
4484 l_line_definition_code       := 'ENC_PO_DEL_INV_RET_RI';
4485 --
4486 l_balance_type_code          := 'E';
4487 l_segment                     := NULL;
4488 l_ccid                        := NULL;
4489 l_adr_transaction_coa_id      := NULL;
4490 l_adr_accounting_coa_id       := NULL;
4491 l_adr_flexfield_segment_code  := NULL;
4492 l_adr_flex_value_set_id       := NULL;
4493 l_adr_value_type_code         := NULL;
4494 l_adr_value_combination_id    := NULL;
4495 l_adr_value_segment_code      := NULL;
4496 
4497 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
4498 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
4499 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
4500 l_budgetary_control_flag     := 'Y';
4501 
4502 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4503 l_bflow_applied_to_amt       := NULL; -- 5132302
4504 l_entered_amt_idx            := NULL;          -- 4262811
4505 l_accted_amt_idx             := NULL;          -- 4262811
4506 l_acc_rev_flag               := NULL;          -- 4262811
4507 l_accrual_line_num           := NULL;          -- 4262811
4508 l_tmp_amt                    := NULL;          -- 4262811
4509 --
4510  
4511 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4512     l_balance_type_code <> 'B' THEN
4513 IF NVL(p_source_16,'
4514 ') =  'Y' AND 
4515 NVL(p_source_17,'
4516 ') =  'Y' AND 
4517 NVL(
4518 xla_ae_sources_pkg.GetSystemSourceChar(
4519    p_source_code           => 'XLA_EVENT_TYPE_CODE'
4520  , p_source_type_code      => 'Y'
4521  , p_source_application_id =>  602
4522 ),'
4523 ') =  'RET_RI_INV'
4524  THEN 
4525 
4526    --
4527    XLA_AE_LINES_PKG.SetNewLine;
4528 
4529    p_balance_type_code          := l_balance_type_code;
4530    -- set the flag so later we will know whether the gain loss line needs to be created
4531    
4532    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4533      p_actual_flag :='A';
4534    END IF;
4535 
4536    --
4537    -- bulk performance
4538    --
4539    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4540                                       p_header_num   => 0); -- 4262811
4541    --
4542    -- set accounting line options
4543    --
4544    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4545            p_natural_side_code          => 'D'
4546          , p_gain_or_loss_flag          => 'N'
4547          , p_gl_transfer_mode_code      => 'S'
4548          , p_acct_entry_type_code       => 'E'
4549          , p_switch_side_flag           => 'N'
4550          , p_merge_duplicate_code       => 'N'
4551          );
4552    --
4553    l_acc_rev_natural_side_code := 'C';  -- 4262811
4554    -- 
4555    --
4556    -- set accounting line type info
4557    --
4558    xla_ae_lines_pkg.SetAcctLineType
4559       (p_component_type             => l_component_type
4560       ,p_event_type_code            => l_event_type_code
4561       ,p_line_definition_owner_code => l_line_definition_owner_code
4562       ,p_line_definition_code       => l_line_definition_code
4563       ,p_accounting_line_code       => l_component_code
4564       ,p_accounting_line_type_code  => l_component_type_code
4565       ,p_accounting_line_appl_id    => l_component_appl_id
4566       ,p_amb_context_code           => l_amb_context_code
4567       ,p_entity_code                => l_entity_code
4568       ,p_event_class_code           => l_event_class_code);
4569    --
4570    -- set accounting class
4571    --
4572    xla_ae_lines_pkg.SetAcctClass(
4573            p_accounting_class_code  => 'PURCHASE_ORDER'
4574          , p_ae_header_id           => l_ae_header_id
4575          );
4576 
4577    --
4578    -- set rounding class
4579    --
4580    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4581                       'PURCHASE_ORDER';
4582 
4583    --
4584    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4585    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4586    --
4587    -- bulk performance
4588    --
4589    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4590 
4591    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4592       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4593 
4594    -- 4955764
4595    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4596       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4597 
4598    -- 4458381 Public Sector Enh
4599    
4600    --
4601    -- set accounting attributes for the line type
4602    --
4603    l_entered_amt_idx := 17;
4604    l_accted_amt_idx  := 19;
4605    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4606    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
4607    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
4608    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
4609    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
4610    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
4611    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
4612    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
4613    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_22);
4614    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
4615    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
4616    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
4617    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
4618    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
4619    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
4620    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
4621    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
4622    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
4623    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
4624    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
4625    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
4626    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
4627    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
4628    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
4629    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
4630    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
4631    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
4632    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
4633    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
4634    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
4635    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
4636    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
4637    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
4638    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
4639    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
4640    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
4641    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
4642    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
4643    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
4644    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
4645    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
4646    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
4647    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
4648 
4649    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4650    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4651 
4652    ---------------------------------------------------------------------------------------------------------------
4653    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4654    ---------------------------------------------------------------------------------------------------------------
4655    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4656 
4657    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4658    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4659 
4660    IF xla_accounting_cache_pkg.GetValueChar
4661          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4662          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4663    AND l_bflow_method_code = 'PRIOR_ENTRY'
4664 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4665    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4666          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4667        )
4668    THEN
4669          xla_ae_lines_pkg.BflowUpgEntry
4670            (p_business_method_code    => l_bflow_method_code
4671            ,p_business_class_code     => l_bflow_class_code
4672            ,p_balance_type            => l_balance_type_code);
4673    ELSE
4674       NULL;
4675 XLA_AE_LINES_PKG.business_flow_validation(
4676                                 p_business_method_code     => l_bflow_method_code
4677                                ,p_business_class_code      => l_bflow_class_code
4678                                ,p_inherit_description_flag => l_inherit_desc_flag);
4679    END IF;
4680 
4681    --
4682    -- call analytical criteria
4683    --
4684    -- Inherited Analytical Criteria for business flow method of Prior Entry.
4685    --
4686    -- call description
4687    --
4688    -- No description or it is inherited.
4689    --
4690    -- call ADRs
4691    -- Bug 4922099
4692    --
4693    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4694         (NVL(l_actual_upg_option, 'N') = 'O') OR
4695         (NVL(l_enc_upg_option, 'N') = 'O')
4696       )
4697    THEN
4698    NULL;
4699    --
4700    --
4701    
4702    --
4703    --
4704    END IF;
4705    --
4706    -- Bug 4922099
4707    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4708           (NVL(l_enc_upg_option, 'N') = 'O')
4709         ) AND
4710         (l_bflow_method_code = 'PRIOR_ENTRY')
4711       )
4712    THEN
4713       IF
4714       --
4715       1 = 1
4716       --
4717       THEN
4718       xla_accounting_err_pkg.build_message
4719                                     (p_appli_s_name            => 'XLA'
4720                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4721                                     ,p_token_1                 => 'LINE_NUMBER'
4722                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4723                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4724                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4725                                                                              l_component_type
4726                                                                             ,l_component_code
4727                                                                             ,l_component_type_code
4728                                                                             ,l_component_appl_id
4729                                                                             ,l_amb_context_code
4730                                                                             ,l_entity_code
4731                                                                             ,l_event_class_code
4732                                                                            )
4733                                     ,p_token_3                 => 'OWNER'
4734                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4735                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4736                                                                           ,p_lookup_code    => l_component_type_code
4737                                                                          )
4738                                     ,p_token_4                 => 'PRODUCT_NAME'
4739                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4740                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4741                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4742                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4743                                     ,p_ae_header_id            =>  NULL
4744                                        );
4745 
4746         IF (C_LEVEL_ERROR>= g_log_level) THEN
4747                  trace
4748                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4749                       ,p_level    => C_LEVEL_ERROR
4750                       ,p_module   => l_log_module);
4751         END IF;
4752       END IF;
4753    END IF;
4754    --
4755    --
4756    ------------------------------------------------------------------------------------------------
4757    -- 4219869 Business Flow
4758    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4759    -- Prior Entry.  Currently, the following code is always generated.
4760    ------------------------------------------------------------------------------------------------
4761    -- No ValidateCurrentLine for business flow method of Prior Entry
4762 
4763    ------------------------------------------------------------------------------------
4764    -- 4219869 Business Flow
4765    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4766    ------------------------------------------------------------------------------------
4767    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4768 
4769    ----------------------------------------------------------------------------------
4770    -- 4219869 Business Flow
4771    -- Update journal entry status -- Need to generate this within IF <condition>
4772    ----------------------------------------------------------------------------------
4773    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4774          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4775          ,p_balance_type_code => l_balance_type_code
4776          );
4777 
4778    -------------------------------------------------------------------------------------------
4779    -- 4262811 - Generate the Accrual Reversal lines
4780    -------------------------------------------------------------------------------------------
4781    BEGIN
4782       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4783                               (g_array_event(p_event_id).array_value_num('header_index'));
4784       IF l_acc_rev_flag IS NULL THEN
4785          l_acc_rev_flag := 'N';
4786       END IF;
4787    EXCEPTION
4788       WHEN OTHERS THEN
4789          l_acc_rev_flag := 'N';
4790    END;
4791    --
4792    IF (l_acc_rev_flag = 'Y') THEN
4793 
4794        -- 4645092  ------------------------------------------------------------------------------
4795        -- To allow MPA report to determine if it should generate report process
4796        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4797        ------------------------------------------------------------------------------------------
4798 
4799        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4800        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4801    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
4802    -- call ADRs
4803    -- Bug 4922099
4804    --
4805    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4806         (NVL(l_actual_upg_option, 'N') = 'O') OR
4807         (NVL(l_enc_upg_option, 'N') = 'O')
4808       )
4809    THEN
4810    NULL;
4811    --
4812    --
4813    
4814    --
4815    --
4816    END IF;
4817 
4818        --
4819        -- Update the line information that should be overwritten
4820        --
4821        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4822                                          p_header_num   => 1);
4823        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4824 
4825        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4826 
4827        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4828           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4829        END IF;
4830 
4831       --
4832       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4833       --
4834       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4835           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4836       ELSE
4837           ---------------------------------------------------------------------------------------------------
4838           -- 4262811a Switch Sign
4839           ---------------------------------------------------------------------------------------------------
4840           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4841           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4842                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4843           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4844                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4845           -- 5132302
4846           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4847                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4848 
4849       END IF;
4850 
4851       -- 4955764
4852       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4853       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4854 
4855 
4856       XLA_AE_LINES_PKG.ValidateCurrentLine;
4857       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4858 
4859       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4860                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4861                ,p_balance_type_code => l_balance_type_code);
4862 
4863    END IF;
4864 
4865    -----------------------------------------------------------------------------------------
4866    -- 4262811 Multiperiod Accounting
4867    -----------------------------------------------------------------------------------------
4868      -- No MPA option is assigned.
4869 
4870 
4871 END IF;
4872 END IF;
4873 --
4874 
4875 --
4876 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4877    trace
4878       (p_msg      => 'END of AcctLineType_10'
4879       ,p_level    => C_LEVEL_PROCEDURE
4880       ,p_module   => l_log_module);
4881 END IF;
4882 --
4883 EXCEPTION
4884   WHEN xla_exceptions_pkg.application_exception THEN
4885       RAISE;
4886   WHEN OTHERS THEN
4887        xla_exceptions_pkg.raise_message
4888            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_10');
4889 END AcctLineType_10;
4890 --
4891 
4892 ---------------------------------------
4893 --
4894 -- PRIVATE FUNCTION
4895 --         AcctLineType_11
4896 --
4897 ---------------------------------------
4898 PROCEDURE AcctLineType_11 (
4899   p_application_id        IN NUMBER
4900  ,p_event_id              IN NUMBER
4901  ,p_calculate_acctd_flag  IN VARCHAR2
4902  ,p_calculate_g_l_flag    IN VARCHAR2
4903  ,p_actual_flag           IN OUT VARCHAR2
4904  ,p_balance_type_code     OUT VARCHAR2
4905  ,p_gain_or_loss_ref      OUT VARCHAR2
4906  
4907 --DISTRIBUTION_IDENTIFIER
4908  , p_source_8            IN NUMBER
4909 --Distribution Type
4910  , p_source_9            IN VARCHAR2
4911  , p_source_9_meaning    IN VARCHAR2
4912 --Entered Currency Code
4913  , p_source_11            IN VARCHAR2
4914 --Purchasing Encumbrance Flag
4915  , p_source_16            IN VARCHAR2
4916 --Organization Encumbrance Reversal Indicator
4917  , p_source_17            IN VARCHAR2
4918 --Applied to Application ID
4919  , p_source_19            IN NUMBER
4920 --Applied to Distribution Link Type
4921  , p_source_20            IN VARCHAR2
4922 --Applied to Entity Code
4923  , p_source_21            IN VARCHAR2
4924 --TXN_PO_DISTRIBUTION_ID
4925  , p_source_22            IN NUMBER
4926 --Applied To Purchase Document Identifier
4927  , p_source_23            IN NUMBER
4928 --PO Budget Account
4929  , p_source_24            IN NUMBER
4930 --Encumbrance Reversal Amount Entered
4931  , p_source_25            IN NUMBER
4932 --Transaction Encumbrance Reversal Amount
4933  , p_source_26            IN NUMBER
4934 --Costing Encumbrance Upgrade Option
4935  , p_source_27            IN VARCHAR2
4936 --Purchasing Encumbrance Type Identifier
4937  , p_source_28            IN NUMBER
4938 )
4939 IS
4940 
4941 l_component_type              VARCHAR2(80);
4942 l_component_code              VARCHAR2(30);
4943 l_component_type_code         VARCHAR2(1);
4944 l_component_appl_id           INTEGER;
4945 l_amb_context_code            VARCHAR2(30);
4946 l_entity_code                 VARCHAR2(30);
4947 l_event_class_code            VARCHAR2(30);
4948 l_ae_header_id                NUMBER;
4949 l_event_type_code             VARCHAR2(30);
4950 l_line_definition_code        VARCHAR2(30);
4951 l_line_definition_owner_code  VARCHAR2(1);
4952 --
4953 -- adr variables
4954 l_segment                     VARCHAR2(30);
4955 l_ccid                        NUMBER;
4956 l_adr_transaction_coa_id      NUMBER;
4957 l_adr_accounting_coa_id       NUMBER;
4958 l_adr_flexfield_segment_code  VARCHAR2(30);
4959 l_adr_flex_value_set_id       NUMBER;
4960 l_adr_value_type_code         VARCHAR2(30);
4961 l_adr_value_combination_id    NUMBER;
4962 l_adr_value_segment_code      VARCHAR2(30);
4963 
4964 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4965 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4966 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4967 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4968 
4969 -- 4262811 Variables ------------------------------------------------------------------------------------------
4970 l_entered_amt_idx             NUMBER;
4971 l_accted_amt_idx              NUMBER;
4972 l_acc_rev_flag                VARCHAR2(1);
4973 l_accrual_line_num            NUMBER;
4974 l_tmp_amt                     NUMBER;
4975 l_acc_rev_natural_side_code   VARCHAR2(1);
4976 
4977 l_num_entries                 NUMBER;
4978 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4979 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4980 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4981 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4982 l_recog_line_1                NUMBER;
4983 l_recog_line_2                NUMBER;
4984 
4985 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4986 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4987 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4988 
4989 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4990 
4991 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4992 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4993 
4994 ---------------------------------------------------------------------------------------------------------------
4995 
4996 
4997 --
4998 -- bulk performance
4999 --
5000 l_balance_type_code           VARCHAR2(1);
5001 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5002 l_log_module                  VARCHAR2(240);
5003 
5004 --
5005 -- Upgrade strategy
5006 --
5007 l_actual_upg_option           VARCHAR2(1);
5008 l_enc_upg_option           VARCHAR2(1);
5009 
5010 --
5011 BEGIN
5012 --
5013 IF g_log_enabled THEN
5014       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_11';
5015 END IF;
5016 --
5017 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5018 
5019       trace
5020          (p_msg      => 'BEGIN of AcctLineType_11'
5021          ,p_level    => C_LEVEL_PROCEDURE
5022          ,p_module   => l_log_module);
5023 
5024 END IF;
5025 --
5026 l_component_type             := 'AMB_JLT';
5027 l_component_code             := 'REINSTATE_PO_ENC_ON_RFI';
5028 l_component_type_code        := 'S';
5029 l_component_appl_id          :=  707;
5030 l_amb_context_code           := 'DEFAULT';
5031 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
5032 l_event_class_code           := 'PURCHASE_ORDER';
5033 l_event_type_code            := 'LOG_RET_RI_INV';
5034 l_line_definition_owner_code := 'S';
5035 l_line_definition_code       := 'ENC_PO_DEL_INV_LOG_RET_RI';
5036 --
5037 l_balance_type_code          := 'E';
5038 l_segment                     := NULL;
5039 l_ccid                        := NULL;
5040 l_adr_transaction_coa_id      := NULL;
5041 l_adr_accounting_coa_id       := NULL;
5042 l_adr_flexfield_segment_code  := NULL;
5043 l_adr_flex_value_set_id       := NULL;
5044 l_adr_value_type_code         := NULL;
5045 l_adr_value_combination_id    := NULL;
5046 l_adr_value_segment_code      := NULL;
5047 
5048 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
5049 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
5050 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
5051 l_budgetary_control_flag     := 'Y';
5052 
5053 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5054 l_bflow_applied_to_amt       := NULL; -- 5132302
5055 l_entered_amt_idx            := NULL;          -- 4262811
5056 l_accted_amt_idx             := NULL;          -- 4262811
5057 l_acc_rev_flag               := NULL;          -- 4262811
5058 l_accrual_line_num           := NULL;          -- 4262811
5059 l_tmp_amt                    := NULL;          -- 4262811
5060 --
5061  
5062 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5063     l_balance_type_code <> 'B' THEN
5064 IF NVL(p_source_16,'
5065 ') =  'Y' AND 
5066 NVL(p_source_17,'
5067 ') =  'Y' AND 
5068 NVL(
5069 xla_ae_sources_pkg.GetSystemSourceChar(
5070    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5071  , p_source_type_code      => 'Y'
5072  , p_source_application_id =>  602
5073 ),'
5074 ') =  'RET_RI_INV'
5075  THEN 
5076 
5077    --
5078    XLA_AE_LINES_PKG.SetNewLine;
5079 
5080    p_balance_type_code          := l_balance_type_code;
5081    -- set the flag so later we will know whether the gain loss line needs to be created
5082    
5083    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5084      p_actual_flag :='A';
5085    END IF;
5086 
5087    --
5088    -- bulk performance
5089    --
5090    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5091                                       p_header_num   => 0); -- 4262811
5092    --
5093    -- set accounting line options
5094    --
5095    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5096            p_natural_side_code          => 'D'
5097          , p_gain_or_loss_flag          => 'N'
5098          , p_gl_transfer_mode_code      => 'S'
5099          , p_acct_entry_type_code       => 'E'
5100          , p_switch_side_flag           => 'N'
5101          , p_merge_duplicate_code       => 'N'
5102          );
5103    --
5104    l_acc_rev_natural_side_code := 'C';  -- 4262811
5105    -- 
5106    --
5107    -- set accounting line type info
5108    --
5109    xla_ae_lines_pkg.SetAcctLineType
5110       (p_component_type             => l_component_type
5111       ,p_event_type_code            => l_event_type_code
5112       ,p_line_definition_owner_code => l_line_definition_owner_code
5113       ,p_line_definition_code       => l_line_definition_code
5114       ,p_accounting_line_code       => l_component_code
5115       ,p_accounting_line_type_code  => l_component_type_code
5116       ,p_accounting_line_appl_id    => l_component_appl_id
5117       ,p_amb_context_code           => l_amb_context_code
5118       ,p_entity_code                => l_entity_code
5119       ,p_event_class_code           => l_event_class_code);
5120    --
5121    -- set accounting class
5122    --
5123    xla_ae_lines_pkg.SetAcctClass(
5124            p_accounting_class_code  => 'PURCHASE_ORDER'
5125          , p_ae_header_id           => l_ae_header_id
5126          );
5127 
5128    --
5129    -- set rounding class
5130    --
5131    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5132                       'PURCHASE_ORDER';
5133 
5134    --
5135    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5136    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5137    --
5138    -- bulk performance
5139    --
5140    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5141 
5142    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5143       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5144 
5145    -- 4955764
5146    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5147       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5148 
5149    -- 4458381 Public Sector Enh
5150    
5151    --
5152    -- set accounting attributes for the line type
5153    --
5154    l_entered_amt_idx := 17;
5155    l_accted_amt_idx  := 19;
5156    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5157    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
5158    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
5159    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
5160    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
5161    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
5162    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
5163    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
5164    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_22);
5165    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
5166    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
5167    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
5168    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
5169    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
5170    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
5171    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
5172    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
5173    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
5174    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
5175    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
5176    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
5177    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
5178    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
5179    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
5180    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
5181    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
5182    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
5183    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
5184    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
5185    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
5186    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
5187    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
5188    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
5189    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
5190    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
5191    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
5192    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
5193    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
5194    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
5195    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
5196    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
5197    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
5198    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
5199 
5200    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5201    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5202 
5203    ---------------------------------------------------------------------------------------------------------------
5204    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5205    ---------------------------------------------------------------------------------------------------------------
5206    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5207 
5208    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5209    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5210 
5211    IF xla_accounting_cache_pkg.GetValueChar
5212          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5213          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5214    AND l_bflow_method_code = 'PRIOR_ENTRY'
5215 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5216    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5217          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5218        )
5219    THEN
5220          xla_ae_lines_pkg.BflowUpgEntry
5221            (p_business_method_code    => l_bflow_method_code
5222            ,p_business_class_code     => l_bflow_class_code
5223            ,p_balance_type            => l_balance_type_code);
5224    ELSE
5225       NULL;
5226 XLA_AE_LINES_PKG.business_flow_validation(
5227                                 p_business_method_code     => l_bflow_method_code
5228                                ,p_business_class_code      => l_bflow_class_code
5229                                ,p_inherit_description_flag => l_inherit_desc_flag);
5230    END IF;
5231 
5232    --
5233    -- call analytical criteria
5234    --
5235    -- Inherited Analytical Criteria for business flow method of Prior Entry.
5236    --
5237    -- call description
5238    --
5239    -- No description or it is inherited.
5240    --
5241    -- call ADRs
5242    -- Bug 4922099
5243    --
5244    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5245         (NVL(l_actual_upg_option, 'N') = 'O') OR
5246         (NVL(l_enc_upg_option, 'N') = 'O')
5247       )
5248    THEN
5249    NULL;
5250    --
5251    --
5252    
5253    --
5254    --
5255    END IF;
5256    --
5257    -- Bug 4922099
5258    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5259           (NVL(l_enc_upg_option, 'N') = 'O')
5260         ) AND
5261         (l_bflow_method_code = 'PRIOR_ENTRY')
5262       )
5263    THEN
5264       IF
5265       --
5266       1 = 1
5267       --
5268       THEN
5269       xla_accounting_err_pkg.build_message
5270                                     (p_appli_s_name            => 'XLA'
5271                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5272                                     ,p_token_1                 => 'LINE_NUMBER'
5273                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5274                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5275                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5276                                                                              l_component_type
5277                                                                             ,l_component_code
5278                                                                             ,l_component_type_code
5279                                                                             ,l_component_appl_id
5280                                                                             ,l_amb_context_code
5281                                                                             ,l_entity_code
5282                                                                             ,l_event_class_code
5283                                                                            )
5284                                     ,p_token_3                 => 'OWNER'
5285                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5286                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5287                                                                           ,p_lookup_code    => l_component_type_code
5288                                                                          )
5289                                     ,p_token_4                 => 'PRODUCT_NAME'
5290                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5291                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5292                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5293                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5294                                     ,p_ae_header_id            =>  NULL
5295                                        );
5296 
5297         IF (C_LEVEL_ERROR>= g_log_level) THEN
5298                  trace
5299                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5300                       ,p_level    => C_LEVEL_ERROR
5301                       ,p_module   => l_log_module);
5302         END IF;
5303       END IF;
5304    END IF;
5305    --
5306    --
5307    ------------------------------------------------------------------------------------------------
5308    -- 4219869 Business Flow
5309    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5310    -- Prior Entry.  Currently, the following code is always generated.
5311    ------------------------------------------------------------------------------------------------
5312    -- No ValidateCurrentLine for business flow method of Prior Entry
5313 
5314    ------------------------------------------------------------------------------------
5315    -- 4219869 Business Flow
5316    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5317    ------------------------------------------------------------------------------------
5318    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5319 
5320    ----------------------------------------------------------------------------------
5321    -- 4219869 Business Flow
5322    -- Update journal entry status -- Need to generate this within IF <condition>
5323    ----------------------------------------------------------------------------------
5324    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5325          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5326          ,p_balance_type_code => l_balance_type_code
5327          );
5328 
5329    -------------------------------------------------------------------------------------------
5330    -- 4262811 - Generate the Accrual Reversal lines
5331    -------------------------------------------------------------------------------------------
5332    BEGIN
5333       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5334                               (g_array_event(p_event_id).array_value_num('header_index'));
5335       IF l_acc_rev_flag IS NULL THEN
5336          l_acc_rev_flag := 'N';
5337       END IF;
5338    EXCEPTION
5339       WHEN OTHERS THEN
5340          l_acc_rev_flag := 'N';
5341    END;
5342    --
5343    IF (l_acc_rev_flag = 'Y') THEN
5344 
5345        -- 4645092  ------------------------------------------------------------------------------
5346        -- To allow MPA report to determine if it should generate report process
5347        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5348        ------------------------------------------------------------------------------------------
5349 
5350        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5351        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5352    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5353    -- call ADRs
5354    -- Bug 4922099
5355    --
5356    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5357         (NVL(l_actual_upg_option, 'N') = 'O') OR
5358         (NVL(l_enc_upg_option, 'N') = 'O')
5359       )
5360    THEN
5361    NULL;
5362    --
5363    --
5364    
5365    --
5366    --
5367    END IF;
5368 
5369        --
5370        -- Update the line information that should be overwritten
5371        --
5372        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5373                                          p_header_num   => 1);
5374        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5375 
5376        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5377 
5378        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5379           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5380        END IF;
5381 
5382       --
5383       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5384       --
5385       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5386           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5387       ELSE
5388           ---------------------------------------------------------------------------------------------------
5389           -- 4262811a Switch Sign
5390           ---------------------------------------------------------------------------------------------------
5391           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5392           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5393                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5394           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5395                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5396           -- 5132302
5397           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5398                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5399 
5400       END IF;
5401 
5402       -- 4955764
5403       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5404       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5405 
5406 
5407       XLA_AE_LINES_PKG.ValidateCurrentLine;
5408       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5409 
5410       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5411                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5412                ,p_balance_type_code => l_balance_type_code);
5413 
5414    END IF;
5415 
5416    -----------------------------------------------------------------------------------------
5417    -- 4262811 Multiperiod Accounting
5418    -----------------------------------------------------------------------------------------
5419      -- No MPA option is assigned.
5420 
5421 
5422 END IF;
5423 END IF;
5424 --
5425 
5426 --
5427 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5428    trace
5429       (p_msg      => 'END of AcctLineType_11'
5430       ,p_level    => C_LEVEL_PROCEDURE
5431       ,p_module   => l_log_module);
5432 END IF;
5433 --
5434 EXCEPTION
5435   WHEN xla_exceptions_pkg.application_exception THEN
5436       RAISE;
5437   WHEN OTHERS THEN
5438        xla_exceptions_pkg.raise_message
5439            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_11');
5440 END AcctLineType_11;
5441 --
5442 
5443 ---------------------------------------
5444 --
5445 -- PRIVATE FUNCTION
5446 --         AcctLineType_12
5447 --
5448 ---------------------------------------
5449 PROCEDURE AcctLineType_12 (
5450   p_application_id        IN NUMBER
5451  ,p_event_id              IN NUMBER
5452  ,p_calculate_acctd_flag  IN VARCHAR2
5453  ,p_calculate_g_l_flag    IN VARCHAR2
5454  ,p_actual_flag           IN OUT VARCHAR2
5455  ,p_balance_type_code     OUT VARCHAR2
5456  ,p_gain_or_loss_ref      OUT VARCHAR2
5457  
5458 --DISTRIBUTION_IDENTIFIER
5459  , p_source_8            IN NUMBER
5460 --Distribution Type
5461  , p_source_9            IN VARCHAR2
5462  , p_source_9_meaning    IN VARCHAR2
5463 --Entered Currency Code
5464  , p_source_11            IN VARCHAR2
5465 --Purchasing Encumbrance Flag
5466  , p_source_16            IN VARCHAR2
5467 --Organization Encumbrance Reversal Indicator
5468  , p_source_17            IN VARCHAR2
5469 --Applied to Application ID
5470  , p_source_19            IN NUMBER
5471 --Applied to Distribution Link Type
5472  , p_source_20            IN VARCHAR2
5473 --Applied to Entity Code
5474  , p_source_21            IN VARCHAR2
5475 --TXN_PO_DISTRIBUTION_ID
5476  , p_source_22            IN NUMBER
5477 --Applied To Purchase Document Identifier
5478  , p_source_23            IN NUMBER
5479 --PO Budget Account
5480  , p_source_24            IN NUMBER
5481 --Encumbrance Reversal Amount Entered
5482  , p_source_25            IN NUMBER
5483 --Transaction Encumbrance Reversal Amount
5484  , p_source_26            IN NUMBER
5485 --Costing Encumbrance Upgrade Option
5486  , p_source_27            IN VARCHAR2
5487 --Purchasing Encumbrance Type Identifier
5488  , p_source_28            IN NUMBER
5489 )
5490 IS
5491 
5492 l_component_type              VARCHAR2(80);
5493 l_component_code              VARCHAR2(30);
5494 l_component_type_code         VARCHAR2(1);
5495 l_component_appl_id           INTEGER;
5496 l_amb_context_code            VARCHAR2(30);
5497 l_entity_code                 VARCHAR2(30);
5498 l_event_class_code            VARCHAR2(30);
5499 l_ae_header_id                NUMBER;
5500 l_event_type_code             VARCHAR2(30);
5501 l_line_definition_code        VARCHAR2(30);
5502 l_line_definition_owner_code  VARCHAR2(1);
5503 --
5504 -- adr variables
5505 l_segment                     VARCHAR2(30);
5506 l_ccid                        NUMBER;
5507 l_adr_transaction_coa_id      NUMBER;
5508 l_adr_accounting_coa_id       NUMBER;
5509 l_adr_flexfield_segment_code  VARCHAR2(30);
5510 l_adr_flex_value_set_id       NUMBER;
5511 l_adr_value_type_code         VARCHAR2(30);
5512 l_adr_value_combination_id    NUMBER;
5513 l_adr_value_segment_code      VARCHAR2(30);
5514 
5515 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5516 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5517 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5518 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5519 
5520 -- 4262811 Variables ------------------------------------------------------------------------------------------
5521 l_entered_amt_idx             NUMBER;
5522 l_accted_amt_idx              NUMBER;
5523 l_acc_rev_flag                VARCHAR2(1);
5524 l_accrual_line_num            NUMBER;
5525 l_tmp_amt                     NUMBER;
5526 l_acc_rev_natural_side_code   VARCHAR2(1);
5527 
5528 l_num_entries                 NUMBER;
5529 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5530 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5531 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5532 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5533 l_recog_line_1                NUMBER;
5534 l_recog_line_2                NUMBER;
5535 
5536 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5537 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5538 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5539 
5540 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5541 
5542 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5543 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5544 
5545 ---------------------------------------------------------------------------------------------------------------
5546 
5547 
5548 --
5549 -- bulk performance
5550 --
5551 l_balance_type_code           VARCHAR2(1);
5552 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5553 l_log_module                  VARCHAR2(240);
5554 
5555 --
5556 -- Upgrade strategy
5557 --
5558 l_actual_upg_option           VARCHAR2(1);
5559 l_enc_upg_option           VARCHAR2(1);
5560 
5561 --
5562 BEGIN
5563 --
5564 IF g_log_enabled THEN
5565       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_12';
5566 END IF;
5567 --
5568 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5569 
5570       trace
5571          (p_msg      => 'BEGIN of AcctLineType_12'
5572          ,p_level    => C_LEVEL_PROCEDURE
5573          ,p_module   => l_log_module);
5574 
5575 END IF;
5576 --
5577 l_component_type             := 'AMB_JLT';
5578 l_component_code             := 'REINSTATE_PO_ENC_ON_RFI';
5579 l_component_type_code        := 'S';
5580 l_component_appl_id          :=  707;
5581 l_amb_context_code           := 'DEFAULT';
5582 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
5583 l_event_class_code           := 'PURCHASE_ORDER';
5584 l_event_type_code            := 'PO_DEL_INV';
5585 l_line_definition_owner_code := 'S';
5586 l_line_definition_code       := 'ENC_PO_DEL_INV_DEL';
5587 --
5588 l_balance_type_code          := 'E';
5589 l_segment                     := NULL;
5590 l_ccid                        := NULL;
5591 l_adr_transaction_coa_id      := NULL;
5592 l_adr_accounting_coa_id       := NULL;
5593 l_adr_flexfield_segment_code  := NULL;
5594 l_adr_flex_value_set_id       := NULL;
5595 l_adr_value_type_code         := NULL;
5596 l_adr_value_combination_id    := NULL;
5597 l_adr_value_segment_code      := NULL;
5598 
5599 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
5600 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
5601 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
5602 l_budgetary_control_flag     := 'Y';
5603 
5604 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5605 l_bflow_applied_to_amt       := NULL; -- 5132302
5606 l_entered_amt_idx            := NULL;          -- 4262811
5607 l_accted_amt_idx             := NULL;          -- 4262811
5608 l_acc_rev_flag               := NULL;          -- 4262811
5609 l_accrual_line_num           := NULL;          -- 4262811
5610 l_tmp_amt                    := NULL;          -- 4262811
5611 --
5612  
5613 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5614     l_balance_type_code <> 'B' THEN
5615 IF NVL(p_source_16,'
5616 ') =  'Y' AND 
5617 NVL(p_source_17,'
5618 ') =  'Y' AND 
5619 NVL(
5620 xla_ae_sources_pkg.GetSystemSourceChar(
5621    p_source_code           => 'XLA_EVENT_TYPE_CODE'
5622  , p_source_type_code      => 'Y'
5623  , p_source_application_id =>  602
5624 ),'
5625 ') =  'RET_RI_INV'
5626  THEN 
5627 
5628    --
5629    XLA_AE_LINES_PKG.SetNewLine;
5630 
5631    p_balance_type_code          := l_balance_type_code;
5632    -- set the flag so later we will know whether the gain loss line needs to be created
5633    
5634    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5635      p_actual_flag :='A';
5636    END IF;
5637 
5638    --
5639    -- bulk performance
5640    --
5641    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5642                                       p_header_num   => 0); -- 4262811
5643    --
5644    -- set accounting line options
5645    --
5646    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5647            p_natural_side_code          => 'D'
5648          , p_gain_or_loss_flag          => 'N'
5649          , p_gl_transfer_mode_code      => 'S'
5650          , p_acct_entry_type_code       => 'E'
5651          , p_switch_side_flag           => 'N'
5652          , p_merge_duplicate_code       => 'N'
5653          );
5654    --
5655    l_acc_rev_natural_side_code := 'C';  -- 4262811
5656    -- 
5657    --
5658    -- set accounting line type info
5659    --
5660    xla_ae_lines_pkg.SetAcctLineType
5661       (p_component_type             => l_component_type
5662       ,p_event_type_code            => l_event_type_code
5663       ,p_line_definition_owner_code => l_line_definition_owner_code
5664       ,p_line_definition_code       => l_line_definition_code
5665       ,p_accounting_line_code       => l_component_code
5666       ,p_accounting_line_type_code  => l_component_type_code
5667       ,p_accounting_line_appl_id    => l_component_appl_id
5668       ,p_amb_context_code           => l_amb_context_code
5669       ,p_entity_code                => l_entity_code
5670       ,p_event_class_code           => l_event_class_code);
5671    --
5672    -- set accounting class
5673    --
5674    xla_ae_lines_pkg.SetAcctClass(
5675            p_accounting_class_code  => 'PURCHASE_ORDER'
5676          , p_ae_header_id           => l_ae_header_id
5677          );
5678 
5679    --
5680    -- set rounding class
5681    --
5682    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5683                       'PURCHASE_ORDER';
5684 
5685    --
5686    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5687    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5688    --
5689    -- bulk performance
5690    --
5691    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5692 
5693    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5694       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5695 
5696    -- 4955764
5697    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5698       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5699 
5700    -- 4458381 Public Sector Enh
5701    
5702    --
5703    -- set accounting attributes for the line type
5704    --
5705    l_entered_amt_idx := 17;
5706    l_accted_amt_idx  := 19;
5707    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5708    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
5709    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
5710    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
5711    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
5712    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
5713    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
5714    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
5715    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_22);
5716    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
5717    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
5718    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
5719    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
5720    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
5721    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
5722    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
5723    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
5724    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
5725    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
5726    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
5727    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
5728    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
5729    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
5730    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
5731    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
5732    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
5733    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
5734    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
5735    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
5736    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
5737    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
5738    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
5739    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
5740    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
5741    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
5742    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
5743    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
5744    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
5745    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
5746    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
5747    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
5748    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
5749    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
5750 
5751    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5752    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5753 
5754    ---------------------------------------------------------------------------------------------------------------
5755    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5756    ---------------------------------------------------------------------------------------------------------------
5757    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5758 
5759    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5760    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5761 
5762    IF xla_accounting_cache_pkg.GetValueChar
5763          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5764          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5765    AND l_bflow_method_code = 'PRIOR_ENTRY'
5766 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5767    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5768          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5769        )
5770    THEN
5771          xla_ae_lines_pkg.BflowUpgEntry
5772            (p_business_method_code    => l_bflow_method_code
5773            ,p_business_class_code     => l_bflow_class_code
5774            ,p_balance_type            => l_balance_type_code);
5775    ELSE
5776       NULL;
5777 XLA_AE_LINES_PKG.business_flow_validation(
5778                                 p_business_method_code     => l_bflow_method_code
5779                                ,p_business_class_code      => l_bflow_class_code
5780                                ,p_inherit_description_flag => l_inherit_desc_flag);
5781    END IF;
5782 
5783    --
5784    -- call analytical criteria
5785    --
5786    -- Inherited Analytical Criteria for business flow method of Prior Entry.
5787    --
5788    -- call description
5789    --
5790    -- No description or it is inherited.
5791    --
5792    -- call ADRs
5793    -- Bug 4922099
5794    --
5795    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5796         (NVL(l_actual_upg_option, 'N') = 'O') OR
5797         (NVL(l_enc_upg_option, 'N') = 'O')
5798       )
5799    THEN
5800    NULL;
5801    --
5802    --
5803    
5804    --
5805    --
5806    END IF;
5807    --
5808    -- Bug 4922099
5809    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5810           (NVL(l_enc_upg_option, 'N') = 'O')
5811         ) AND
5812         (l_bflow_method_code = 'PRIOR_ENTRY')
5813       )
5814    THEN
5815       IF
5816       --
5817       1 = 1
5818       --
5819       THEN
5820       xla_accounting_err_pkg.build_message
5821                                     (p_appli_s_name            => 'XLA'
5822                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5823                                     ,p_token_1                 => 'LINE_NUMBER'
5824                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5825                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5826                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5827                                                                              l_component_type
5828                                                                             ,l_component_code
5829                                                                             ,l_component_type_code
5830                                                                             ,l_component_appl_id
5831                                                                             ,l_amb_context_code
5832                                                                             ,l_entity_code
5833                                                                             ,l_event_class_code
5834                                                                            )
5835                                     ,p_token_3                 => 'OWNER'
5836                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5837                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5838                                                                           ,p_lookup_code    => l_component_type_code
5839                                                                          )
5840                                     ,p_token_4                 => 'PRODUCT_NAME'
5841                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5842                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5843                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5844                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5845                                     ,p_ae_header_id            =>  NULL
5846                                        );
5847 
5848         IF (C_LEVEL_ERROR>= g_log_level) THEN
5849                  trace
5850                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5851                       ,p_level    => C_LEVEL_ERROR
5852                       ,p_module   => l_log_module);
5853         END IF;
5854       END IF;
5855    END IF;
5856    --
5857    --
5858    ------------------------------------------------------------------------------------------------
5859    -- 4219869 Business Flow
5860    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5861    -- Prior Entry.  Currently, the following code is always generated.
5862    ------------------------------------------------------------------------------------------------
5863    -- No ValidateCurrentLine for business flow method of Prior Entry
5864 
5865    ------------------------------------------------------------------------------------
5866    -- 4219869 Business Flow
5867    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5868    ------------------------------------------------------------------------------------
5869    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5870 
5871    ----------------------------------------------------------------------------------
5872    -- 4219869 Business Flow
5873    -- Update journal entry status -- Need to generate this within IF <condition>
5874    ----------------------------------------------------------------------------------
5875    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5876          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5877          ,p_balance_type_code => l_balance_type_code
5878          );
5879 
5880    -------------------------------------------------------------------------------------------
5881    -- 4262811 - Generate the Accrual Reversal lines
5882    -------------------------------------------------------------------------------------------
5883    BEGIN
5884       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5885                               (g_array_event(p_event_id).array_value_num('header_index'));
5886       IF l_acc_rev_flag IS NULL THEN
5887          l_acc_rev_flag := 'N';
5888       END IF;
5889    EXCEPTION
5890       WHEN OTHERS THEN
5891          l_acc_rev_flag := 'N';
5892    END;
5893    --
5894    IF (l_acc_rev_flag = 'Y') THEN
5895 
5896        -- 4645092  ------------------------------------------------------------------------------
5897        -- To allow MPA report to determine if it should generate report process
5898        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5899        ------------------------------------------------------------------------------------------
5900 
5901        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5902        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5903    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5904    -- call ADRs
5905    -- Bug 4922099
5906    --
5907    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5908         (NVL(l_actual_upg_option, 'N') = 'O') OR
5909         (NVL(l_enc_upg_option, 'N') = 'O')
5910       )
5911    THEN
5912    NULL;
5913    --
5914    --
5915    
5916    --
5917    --
5918    END IF;
5919 
5920        --
5921        -- Update the line information that should be overwritten
5922        --
5923        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5924                                          p_header_num   => 1);
5925        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5926 
5927        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5928 
5929        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5930           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5931        END IF;
5932 
5933       --
5934       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5935       --
5936       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5937           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5938       ELSE
5939           ---------------------------------------------------------------------------------------------------
5940           -- 4262811a Switch Sign
5941           ---------------------------------------------------------------------------------------------------
5942           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5943           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5944                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5945           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5946                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5947           -- 5132302
5948           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5949                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5950 
5951       END IF;
5952 
5953       -- 4955764
5954       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5955       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5956 
5957 
5958       XLA_AE_LINES_PKG.ValidateCurrentLine;
5959       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5960 
5961       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5962                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5963                ,p_balance_type_code => l_balance_type_code);
5964 
5965    END IF;
5966 
5967    -----------------------------------------------------------------------------------------
5968    -- 4262811 Multiperiod Accounting
5969    -----------------------------------------------------------------------------------------
5970      -- No MPA option is assigned.
5971 
5972 
5973 END IF;
5974 END IF;
5975 --
5976 
5977 --
5978 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5979    trace
5980       (p_msg      => 'END of AcctLineType_12'
5981       ,p_level    => C_LEVEL_PROCEDURE
5982       ,p_module   => l_log_module);
5983 END IF;
5984 --
5985 EXCEPTION
5986   WHEN xla_exceptions_pkg.application_exception THEN
5987       RAISE;
5988   WHEN OTHERS THEN
5989        xla_exceptions_pkg.raise_message
5990            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_12');
5991 END AcctLineType_12;
5992 --
5993 
5994 ---------------------------------------
5995 --
5996 -- PRIVATE FUNCTION
5997 --         AcctLineType_13
5998 --
5999 ---------------------------------------
6000 PROCEDURE AcctLineType_13 (
6001   p_application_id        IN NUMBER
6002  ,p_event_id              IN NUMBER
6003  ,p_calculate_acctd_flag  IN VARCHAR2
6004  ,p_calculate_g_l_flag    IN VARCHAR2
6005  ,p_actual_flag           IN OUT VARCHAR2
6006  ,p_balance_type_code     OUT VARCHAR2
6007  ,p_gain_or_loss_ref      OUT VARCHAR2
6008  
6009 --DISTRIBUTION_IDENTIFIER
6010  , p_source_8            IN NUMBER
6011 --Distribution Type
6012  , p_source_9            IN VARCHAR2
6013  , p_source_9_meaning    IN VARCHAR2
6014 --Entered Currency Code
6015  , p_source_11            IN VARCHAR2
6016 --Purchasing Encumbrance Flag
6017  , p_source_16            IN VARCHAR2
6018 --Applied to Application ID
6019  , p_source_19            IN NUMBER
6020 --Applied to Distribution Link Type
6021  , p_source_20            IN VARCHAR2
6022 --Applied to Entity Code
6023  , p_source_21            IN VARCHAR2
6024 --Applied To Purchase Document Identifier
6025  , p_source_23            IN NUMBER
6026 --PO Budget Account
6027  , p_source_24            IN NUMBER
6028 --Encumbrance Reversal Amount Entered
6029  , p_source_25            IN NUMBER
6030 --Transaction Encumbrance Reversal Amount
6031  , p_source_26            IN NUMBER
6032 --Costing Encumbrance Upgrade Option
6033  , p_source_27            IN VARCHAR2
6034 --Purchasing Encumbrance Type Identifier
6035  , p_source_28            IN NUMBER
6036 --Receiving Accounting Line Type
6037  , p_source_29            IN VARCHAR2
6038 --PO_DISTRIBUTION_ID
6039  , p_source_30            IN NUMBER
6040 )
6041 IS
6042 
6043 l_component_type              VARCHAR2(80);
6044 l_component_code              VARCHAR2(30);
6045 l_component_type_code         VARCHAR2(1);
6046 l_component_appl_id           INTEGER;
6047 l_amb_context_code            VARCHAR2(30);
6048 l_entity_code                 VARCHAR2(30);
6049 l_event_class_code            VARCHAR2(30);
6050 l_ae_header_id                NUMBER;
6051 l_event_type_code             VARCHAR2(30);
6052 l_line_definition_code        VARCHAR2(30);
6053 l_line_definition_owner_code  VARCHAR2(1);
6054 --
6055 -- adr variables
6056 l_segment                     VARCHAR2(30);
6057 l_ccid                        NUMBER;
6058 l_adr_transaction_coa_id      NUMBER;
6059 l_adr_accounting_coa_id       NUMBER;
6060 l_adr_flexfield_segment_code  VARCHAR2(30);
6061 l_adr_flex_value_set_id       NUMBER;
6062 l_adr_value_type_code         VARCHAR2(30);
6063 l_adr_value_combination_id    NUMBER;
6064 l_adr_value_segment_code      VARCHAR2(30);
6065 
6066 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6067 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6068 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6069 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6070 
6071 -- 4262811 Variables ------------------------------------------------------------------------------------------
6072 l_entered_amt_idx             NUMBER;
6073 l_accted_amt_idx              NUMBER;
6074 l_acc_rev_flag                VARCHAR2(1);
6075 l_accrual_line_num            NUMBER;
6076 l_tmp_amt                     NUMBER;
6077 l_acc_rev_natural_side_code   VARCHAR2(1);
6078 
6079 l_num_entries                 NUMBER;
6080 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6081 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6082 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6083 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6084 l_recog_line_1                NUMBER;
6085 l_recog_line_2                NUMBER;
6086 
6087 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6088 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6089 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6090 
6091 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6092 
6093 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6094 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6095 
6096 ---------------------------------------------------------------------------------------------------------------
6097 
6098 
6099 --
6100 -- bulk performance
6101 --
6102 l_balance_type_code           VARCHAR2(1);
6103 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6104 l_log_module                  VARCHAR2(240);
6105 
6106 --
6107 -- Upgrade strategy
6108 --
6109 l_actual_upg_option           VARCHAR2(1);
6110 l_enc_upg_option           VARCHAR2(1);
6111 
6112 --
6113 BEGIN
6114 --
6115 IF g_log_enabled THEN
6116       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_13';
6117 END IF;
6118 --
6119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6120 
6121       trace
6122          (p_msg      => 'BEGIN of AcctLineType_13'
6123          ,p_level    => C_LEVEL_PROCEDURE
6124          ,p_module   => l_log_module);
6125 
6126 END IF;
6127 --
6128 l_component_type             := 'AMB_JLT';
6129 l_component_code             := 'REINSTATE_PO_ENC_ON_RTR';
6130 l_component_type_code        := 'S';
6131 l_component_appl_id          :=  707;
6132 l_amb_context_code           := 'DEFAULT';
6133 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
6134 l_event_class_code           := 'DELIVER_EXPENSE';
6135 l_event_type_code            := 'DELIVER_EXPENSE_ALL';
6136 l_line_definition_owner_code := 'S';
6137 l_line_definition_code       := 'PO_ENCUM_FOR_DEL_TO_EXP';
6138 --
6139 l_balance_type_code          := 'E';
6140 l_segment                     := NULL;
6141 l_ccid                        := NULL;
6142 l_adr_transaction_coa_id      := NULL;
6143 l_adr_accounting_coa_id       := NULL;
6144 l_adr_flexfield_segment_code  := NULL;
6145 l_adr_flex_value_set_id       := NULL;
6146 l_adr_value_type_code         := NULL;
6147 l_adr_value_combination_id    := NULL;
6148 l_adr_value_segment_code      := NULL;
6149 
6150 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
6151 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
6152 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
6153 l_budgetary_control_flag     := 'Y';
6154 
6155 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6156 l_bflow_applied_to_amt       := NULL; -- 5132302
6157 l_entered_amt_idx            := NULL;          -- 4262811
6158 l_accted_amt_idx             := NULL;          -- 4262811
6159 l_acc_rev_flag               := NULL;          -- 4262811
6160 l_accrual_line_num           := NULL;          -- 4262811
6161 l_tmp_amt                    := NULL;          -- 4262811
6162 --
6163  
6164 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6165     l_balance_type_code <> 'B' THEN
6166 IF NVL(p_source_16,'
6167 ') =  'Y' AND 
6168 NVL(
6169 xla_ae_sources_pkg.GetSystemSourceChar(
6170    p_source_code           => 'XLA_EVENT_TYPE_CODE'
6171  , p_source_type_code      => 'Y'
6172  , p_source_application_id =>  602
6173 ),'
6174 ') =  'RETURN_TO_RECEIVING' AND 
6175 NVL(p_source_29,'
6176 ') =  'Charge'
6177  THEN 
6178 
6179    --
6180    XLA_AE_LINES_PKG.SetNewLine;
6181 
6182    p_balance_type_code          := l_balance_type_code;
6183    -- set the flag so later we will know whether the gain loss line needs to be created
6184    
6185    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6186      p_actual_flag :='A';
6187    END IF;
6188 
6189    --
6190    -- bulk performance
6191    --
6192    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6193                                       p_header_num   => 0); -- 4262811
6194    --
6195    -- set accounting line options
6196    --
6197    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6198            p_natural_side_code          => 'D'
6199          , p_gain_or_loss_flag          => 'N'
6200          , p_gl_transfer_mode_code      => 'S'
6201          , p_acct_entry_type_code       => 'E'
6202          , p_switch_side_flag           => 'Y'
6203          , p_merge_duplicate_code       => 'N'
6204          );
6205    --
6206    l_acc_rev_natural_side_code := 'C';  -- 4262811
6207    -- 
6208    --
6209    -- set accounting line type info
6210    --
6211    xla_ae_lines_pkg.SetAcctLineType
6212       (p_component_type             => l_component_type
6213       ,p_event_type_code            => l_event_type_code
6214       ,p_line_definition_owner_code => l_line_definition_owner_code
6215       ,p_line_definition_code       => l_line_definition_code
6216       ,p_accounting_line_code       => l_component_code
6217       ,p_accounting_line_type_code  => l_component_type_code
6218       ,p_accounting_line_appl_id    => l_component_appl_id
6219       ,p_amb_context_code           => l_amb_context_code
6220       ,p_entity_code                => l_entity_code
6221       ,p_event_class_code           => l_event_class_code);
6222    --
6223    -- set accounting class
6224    --
6225    xla_ae_lines_pkg.SetAcctClass(
6226            p_accounting_class_code  => 'PURCHASE_ORDER'
6227          , p_ae_header_id           => l_ae_header_id
6228          );
6229 
6230    --
6231    -- set rounding class
6232    --
6233    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6234                       'PURCHASE_ORDER';
6235 
6236    --
6237    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6238    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6239    --
6240    -- bulk performance
6241    --
6242    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6243 
6244    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6245       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6246 
6247    -- 4955764
6248    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6249       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6250 
6251    -- 4458381 Public Sector Enh
6252    
6253    --
6254    -- set accounting attributes for the line type
6255    --
6256    l_entered_amt_idx := 17;
6257    l_accted_amt_idx  := 19;
6258    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6259    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
6260    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
6261    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
6262    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
6263    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
6264    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
6265    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
6266    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_30);
6267    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
6268    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
6269    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
6270    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
6271    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
6272    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
6273    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
6274    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
6275    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
6276    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
6277    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
6278    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
6279    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
6280    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
6281    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
6282    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
6283    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
6284    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
6285    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
6286    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
6287    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
6288    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
6289    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
6290    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
6291    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
6292    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
6293    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
6294    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
6295    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
6296    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
6297    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
6298    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
6299    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
6300    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
6301 
6302    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6303    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6304 
6305    ---------------------------------------------------------------------------------------------------------------
6306    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6307    ---------------------------------------------------------------------------------------------------------------
6308    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6309 
6310    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6311    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6312 
6313    IF xla_accounting_cache_pkg.GetValueChar
6314          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6315          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6316    AND l_bflow_method_code = 'PRIOR_ENTRY'
6317 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6318    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6319          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6320        )
6321    THEN
6322          xla_ae_lines_pkg.BflowUpgEntry
6323            (p_business_method_code    => l_bflow_method_code
6324            ,p_business_class_code     => l_bflow_class_code
6325            ,p_balance_type            => l_balance_type_code);
6326    ELSE
6327       NULL;
6328 XLA_AE_LINES_PKG.business_flow_validation(
6329                                 p_business_method_code     => l_bflow_method_code
6330                                ,p_business_class_code      => l_bflow_class_code
6331                                ,p_inherit_description_flag => l_inherit_desc_flag);
6332    END IF;
6333 
6334    --
6335    -- call analytical criteria
6336    --
6337    -- Inherited Analytical Criteria for business flow method of Prior Entry.
6338    --
6339    -- call description
6340    --
6341    -- No description or it is inherited.
6342    --
6343    -- call ADRs
6344    -- Bug 4922099
6345    --
6346    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6347         (NVL(l_actual_upg_option, 'N') = 'O') OR
6348         (NVL(l_enc_upg_option, 'N') = 'O')
6349       )
6350    THEN
6351    NULL;
6352    --
6353    --
6354    
6355    --
6356    --
6357    END IF;
6358    --
6359    -- Bug 4922099
6360    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6361           (NVL(l_enc_upg_option, 'N') = 'O')
6362         ) AND
6363         (l_bflow_method_code = 'PRIOR_ENTRY')
6364       )
6365    THEN
6366       IF
6367       --
6368       1 = 1
6369       --
6370       THEN
6371       xla_accounting_err_pkg.build_message
6372                                     (p_appli_s_name            => 'XLA'
6373                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6374                                     ,p_token_1                 => 'LINE_NUMBER'
6375                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6376                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6377                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6378                                                                              l_component_type
6379                                                                             ,l_component_code
6380                                                                             ,l_component_type_code
6381                                                                             ,l_component_appl_id
6382                                                                             ,l_amb_context_code
6383                                                                             ,l_entity_code
6384                                                                             ,l_event_class_code
6385                                                                            )
6386                                     ,p_token_3                 => 'OWNER'
6387                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6388                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6389                                                                           ,p_lookup_code    => l_component_type_code
6390                                                                          )
6391                                     ,p_token_4                 => 'PRODUCT_NAME'
6392                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6393                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6394                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6395                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6396                                     ,p_ae_header_id            =>  NULL
6397                                        );
6398 
6399         IF (C_LEVEL_ERROR>= g_log_level) THEN
6400                  trace
6401                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6402                       ,p_level    => C_LEVEL_ERROR
6403                       ,p_module   => l_log_module);
6404         END IF;
6405       END IF;
6406    END IF;
6407    --
6408    --
6409    ------------------------------------------------------------------------------------------------
6410    -- 4219869 Business Flow
6411    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6412    -- Prior Entry.  Currently, the following code is always generated.
6413    ------------------------------------------------------------------------------------------------
6414    -- No ValidateCurrentLine for business flow method of Prior Entry
6415 
6416    ------------------------------------------------------------------------------------
6417    -- 4219869 Business Flow
6418    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6419    ------------------------------------------------------------------------------------
6420    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6421 
6422    ----------------------------------------------------------------------------------
6423    -- 4219869 Business Flow
6424    -- Update journal entry status -- Need to generate this within IF <condition>
6425    ----------------------------------------------------------------------------------
6426    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6427          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6428          ,p_balance_type_code => l_balance_type_code
6429          );
6430 
6431    -------------------------------------------------------------------------------------------
6432    -- 4262811 - Generate the Accrual Reversal lines
6433    -------------------------------------------------------------------------------------------
6434    BEGIN
6435       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6436                               (g_array_event(p_event_id).array_value_num('header_index'));
6437       IF l_acc_rev_flag IS NULL THEN
6438          l_acc_rev_flag := 'N';
6439       END IF;
6440    EXCEPTION
6441       WHEN OTHERS THEN
6442          l_acc_rev_flag := 'N';
6443    END;
6444    --
6445    IF (l_acc_rev_flag = 'Y') THEN
6446 
6447        -- 4645092  ------------------------------------------------------------------------------
6448        -- To allow MPA report to determine if it should generate report process
6449        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6450        ------------------------------------------------------------------------------------------
6451 
6452        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6453        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6454    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
6455    -- call ADRs
6456    -- Bug 4922099
6457    --
6458    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6459         (NVL(l_actual_upg_option, 'N') = 'O') OR
6460         (NVL(l_enc_upg_option, 'N') = 'O')
6461       )
6462    THEN
6463    NULL;
6464    --
6465    --
6466    
6467    --
6468    --
6469    END IF;
6470 
6471        --
6472        -- Update the line information that should be overwritten
6473        --
6474        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6475                                          p_header_num   => 1);
6476        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6477 
6478        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6479 
6480        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6481           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6482        END IF;
6483 
6484       --
6485       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6486       --
6487       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6488           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6489       ELSE
6490           ---------------------------------------------------------------------------------------------------
6491           -- 4262811a Switch Sign
6492           ---------------------------------------------------------------------------------------------------
6493           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6494           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6495                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6496           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6497                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6498           -- 5132302
6499           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6500                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6501 
6502       END IF;
6503 
6504       -- 4955764
6505       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6506       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6507 
6508 
6509       XLA_AE_LINES_PKG.ValidateCurrentLine;
6510       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6511 
6512       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6513                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6514                ,p_balance_type_code => l_balance_type_code);
6515 
6516    END IF;
6517 
6518    -----------------------------------------------------------------------------------------
6519    -- 4262811 Multiperiod Accounting
6520    -----------------------------------------------------------------------------------------
6521      -- No MPA option is assigned.
6522 
6523 
6524 END IF;
6525 END IF;
6526 --
6527 
6528 --
6529 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6530    trace
6531       (p_msg      => 'END of AcctLineType_13'
6532       ,p_level    => C_LEVEL_PROCEDURE
6533       ,p_module   => l_log_module);
6534 END IF;
6535 --
6536 EXCEPTION
6537   WHEN xla_exceptions_pkg.application_exception THEN
6538       RAISE;
6539   WHEN OTHERS THEN
6540        xla_exceptions_pkg.raise_message
6541            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_13');
6542 END AcctLineType_13;
6543 --
6544 
6545 ---------------------------------------
6546 --
6547 -- PRIVATE FUNCTION
6548 --         AcctLineType_14
6549 --
6550 ---------------------------------------
6551 PROCEDURE AcctLineType_14 (
6552   p_application_id        IN NUMBER
6553  ,p_event_id              IN NUMBER
6554  ,p_calculate_acctd_flag  IN VARCHAR2
6555  ,p_calculate_g_l_flag    IN VARCHAR2
6556  ,p_actual_flag           IN OUT VARCHAR2
6557  ,p_balance_type_code     OUT VARCHAR2
6558  ,p_gain_or_loss_ref      OUT VARCHAR2
6559  
6560 --DISTRIBUTION_IDENTIFIER
6561  , p_source_8            IN NUMBER
6562 --Distribution Type
6563  , p_source_9            IN VARCHAR2
6564  , p_source_9_meaning    IN VARCHAR2
6565 --Entered Currency Code
6566  , p_source_11            IN VARCHAR2
6567 --Purchasing Encumbrance Flag
6568  , p_source_16            IN VARCHAR2
6569 --Applied to Application ID
6570  , p_source_19            IN NUMBER
6571 --Applied to Distribution Link Type
6572  , p_source_20            IN VARCHAR2
6573 --Applied to Entity Code
6574  , p_source_21            IN VARCHAR2
6575 --Applied To Purchase Document Identifier
6576  , p_source_23            IN NUMBER
6577 --PO Budget Account
6578  , p_source_24            IN NUMBER
6579 --Encumbrance Reversal Amount Entered
6580  , p_source_25            IN NUMBER
6581 --Transaction Encumbrance Reversal Amount
6582  , p_source_26            IN NUMBER
6583 --Costing Encumbrance Upgrade Option
6584  , p_source_27            IN VARCHAR2
6585 --Purchasing Encumbrance Type Identifier
6586  , p_source_28            IN NUMBER
6587 --Receiving Accounting Line Type
6588  , p_source_29            IN VARCHAR2
6589 --PO_DISTRIBUTION_ID
6590  , p_source_30            IN NUMBER
6591 --Reserved Flag
6592  , p_source_31            IN VARCHAR2
6593 )
6594 IS
6595 
6596 l_component_type              VARCHAR2(80);
6597 l_component_code              VARCHAR2(30);
6598 l_component_type_code         VARCHAR2(1);
6599 l_component_appl_id           INTEGER;
6600 l_amb_context_code            VARCHAR2(30);
6601 l_entity_code                 VARCHAR2(30);
6602 l_event_class_code            VARCHAR2(30);
6603 l_ae_header_id                NUMBER;
6604 l_event_type_code             VARCHAR2(30);
6605 l_line_definition_code        VARCHAR2(30);
6606 l_line_definition_owner_code  VARCHAR2(1);
6607 --
6608 -- adr variables
6609 l_segment                     VARCHAR2(30);
6610 l_ccid                        NUMBER;
6611 l_adr_transaction_coa_id      NUMBER;
6612 l_adr_accounting_coa_id       NUMBER;
6613 l_adr_flexfield_segment_code  VARCHAR2(30);
6614 l_adr_flex_value_set_id       NUMBER;
6615 l_adr_value_type_code         VARCHAR2(30);
6616 l_adr_value_combination_id    NUMBER;
6617 l_adr_value_segment_code      VARCHAR2(30);
6618 
6619 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6620 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6621 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6622 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6623 
6624 -- 4262811 Variables ------------------------------------------------------------------------------------------
6625 l_entered_amt_idx             NUMBER;
6626 l_accted_amt_idx              NUMBER;
6627 l_acc_rev_flag                VARCHAR2(1);
6628 l_accrual_line_num            NUMBER;
6629 l_tmp_amt                     NUMBER;
6630 l_acc_rev_natural_side_code   VARCHAR2(1);
6631 
6632 l_num_entries                 NUMBER;
6633 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6634 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6635 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6636 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6637 l_recog_line_1                NUMBER;
6638 l_recog_line_2                NUMBER;
6639 
6640 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6641 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6642 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6643 
6644 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6645 
6646 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6647 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6648 
6649 ---------------------------------------------------------------------------------------------------------------
6650 
6651 
6652 --
6653 -- bulk performance
6654 --
6655 l_balance_type_code           VARCHAR2(1);
6656 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6657 l_log_module                  VARCHAR2(240);
6658 
6659 --
6660 -- Upgrade strategy
6661 --
6662 l_actual_upg_option           VARCHAR2(1);
6663 l_enc_upg_option           VARCHAR2(1);
6664 
6665 --
6666 BEGIN
6667 --
6668 IF g_log_enabled THEN
6669       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_14';
6670 END IF;
6671 --
6672 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6673 
6674       trace
6675          (p_msg      => 'BEGIN of AcctLineType_14'
6676          ,p_level    => C_LEVEL_PROCEDURE
6677          ,p_module   => l_log_module);
6678 
6679 END IF;
6680 --
6681 l_component_type             := 'AMB_JLT';
6682 l_component_code             := 'RELIEVE_PO_ENC_ON_DTE';
6683 l_component_type_code        := 'S';
6684 l_component_appl_id          :=  707;
6685 l_amb_context_code           := 'DEFAULT';
6686 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
6687 l_event_class_code           := 'DELIVER_EXPENSE';
6688 l_event_type_code            := 'DELIVER_EXPENSE_ALL';
6689 l_line_definition_owner_code := 'S';
6690 l_line_definition_code       := 'PO_ENCUM_FOR_DEL_TO_EXP';
6691 --
6692 l_balance_type_code          := 'E';
6693 l_segment                     := NULL;
6694 l_ccid                        := NULL;
6695 l_adr_transaction_coa_id      := NULL;
6696 l_adr_accounting_coa_id       := NULL;
6697 l_adr_flexfield_segment_code  := NULL;
6698 l_adr_flex_value_set_id       := NULL;
6699 l_adr_value_type_code         := NULL;
6700 l_adr_value_combination_id    := NULL;
6701 l_adr_value_segment_code      := NULL;
6702 
6703 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
6704 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
6705 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
6706 l_budgetary_control_flag     := 'Y';
6707 
6708 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6709 l_bflow_applied_to_amt       := NULL; -- 5132302
6710 l_entered_amt_idx            := NULL;          -- 4262811
6711 l_accted_amt_idx             := NULL;          -- 4262811
6712 l_acc_rev_flag               := NULL;          -- 4262811
6713 l_accrual_line_num           := NULL;          -- 4262811
6714 l_tmp_amt                    := NULL;          -- 4262811
6715 --
6716  
6717 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6718     l_balance_type_code <> 'B' THEN
6719 IF NVL(p_source_16,'
6720 ') =  'Y' AND 
6721 NVL(p_source_31,'
6722 ') =  'Y' AND 
6723 NVL(
6724 xla_ae_sources_pkg.GetSystemSourceChar(
6725    p_source_code           => 'XLA_EVENT_TYPE_CODE'
6726  , p_source_type_code      => 'Y'
6727  , p_source_application_id =>  602
6728 ),'
6729 ') =  'DELIVER_EXPENSE' AND 
6730 NVL(p_source_29,'
6731 ') =  'Charge'
6732  THEN 
6733 
6734    --
6735    XLA_AE_LINES_PKG.SetNewLine;
6736 
6737    p_balance_type_code          := l_balance_type_code;
6738    -- set the flag so later we will know whether the gain loss line needs to be created
6739    
6740    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6741      p_actual_flag :='A';
6742    END IF;
6743 
6744    --
6745    -- bulk performance
6746    --
6747    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6748                                       p_header_num   => 0); -- 4262811
6749    --
6750    -- set accounting line options
6751    --
6752    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6753            p_natural_side_code          => 'D'
6754          , p_gain_or_loss_flag          => 'N'
6755          , p_gl_transfer_mode_code      => 'S'
6756          , p_acct_entry_type_code       => 'E'
6757          , p_switch_side_flag           => 'Y'
6758          , p_merge_duplicate_code       => 'N'
6759          );
6760    --
6761    l_acc_rev_natural_side_code := 'C';  -- 4262811
6762    -- 
6763    --
6764    -- set accounting line type info
6765    --
6766    xla_ae_lines_pkg.SetAcctLineType
6767       (p_component_type             => l_component_type
6768       ,p_event_type_code            => l_event_type_code
6769       ,p_line_definition_owner_code => l_line_definition_owner_code
6770       ,p_line_definition_code       => l_line_definition_code
6771       ,p_accounting_line_code       => l_component_code
6772       ,p_accounting_line_type_code  => l_component_type_code
6773       ,p_accounting_line_appl_id    => l_component_appl_id
6774       ,p_amb_context_code           => l_amb_context_code
6775       ,p_entity_code                => l_entity_code
6776       ,p_event_class_code           => l_event_class_code);
6777    --
6778    -- set accounting class
6779    --
6780    xla_ae_lines_pkg.SetAcctClass(
6781            p_accounting_class_code  => 'PURCHASE_ORDER'
6782          , p_ae_header_id           => l_ae_header_id
6783          );
6784 
6785    --
6786    -- set rounding class
6787    --
6788    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6789                       'PURCHASE_ORDER';
6790 
6791    --
6792    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6793    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6794    --
6795    -- bulk performance
6796    --
6797    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6798 
6799    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6800       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6801 
6802    -- 4955764
6803    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6804       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6805 
6806    -- 4458381 Public Sector Enh
6807    
6808    --
6809    -- set accounting attributes for the line type
6810    --
6811    l_entered_amt_idx := 17;
6812    l_accted_amt_idx  := 19;
6813    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6814    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
6815    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
6816    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
6817    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
6818    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
6819    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
6820    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
6821    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_30);
6822    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
6823    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
6824    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
6825    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
6826    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
6827    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
6828    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
6829    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
6830    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
6831    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
6832    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
6833    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
6834    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
6835    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
6836    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
6837    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
6838    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
6839    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
6840    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
6841    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
6842    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
6843    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
6844    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
6845    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
6846    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
6847    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
6848    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
6849    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
6850    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
6851    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
6852    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
6853    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
6854    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
6855    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
6856 
6857    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6858    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6859 
6860    ---------------------------------------------------------------------------------------------------------------
6861    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6862    ---------------------------------------------------------------------------------------------------------------
6863    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6864 
6865    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6866    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6867 
6868    IF xla_accounting_cache_pkg.GetValueChar
6869          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6870          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6871    AND l_bflow_method_code = 'PRIOR_ENTRY'
6872 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6873    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6874          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6875        )
6876    THEN
6877          xla_ae_lines_pkg.BflowUpgEntry
6878            (p_business_method_code    => l_bflow_method_code
6879            ,p_business_class_code     => l_bflow_class_code
6880            ,p_balance_type            => l_balance_type_code);
6881    ELSE
6882       NULL;
6883 XLA_AE_LINES_PKG.business_flow_validation(
6884                                 p_business_method_code     => l_bflow_method_code
6885                                ,p_business_class_code      => l_bflow_class_code
6886                                ,p_inherit_description_flag => l_inherit_desc_flag);
6887    END IF;
6888 
6889    --
6890    -- call analytical criteria
6891    --
6892    -- Inherited Analytical Criteria for business flow method of Prior Entry.
6893    --
6894    -- call description
6895    --
6896    -- No description or it is inherited.
6897    --
6898    -- call ADRs
6899    -- Bug 4922099
6900    --
6901    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6902         (NVL(l_actual_upg_option, 'N') = 'O') OR
6903         (NVL(l_enc_upg_option, 'N') = 'O')
6904       )
6905    THEN
6906    NULL;
6907    --
6908    --
6909    
6910    --
6911    --
6912    END IF;
6913    --
6914    -- Bug 4922099
6915    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6916           (NVL(l_enc_upg_option, 'N') = 'O')
6917         ) AND
6918         (l_bflow_method_code = 'PRIOR_ENTRY')
6919       )
6920    THEN
6921       IF
6922       --
6923       1 = 1
6924       --
6925       THEN
6926       xla_accounting_err_pkg.build_message
6927                                     (p_appli_s_name            => 'XLA'
6928                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6929                                     ,p_token_1                 => 'LINE_NUMBER'
6930                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6931                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6932                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6933                                                                              l_component_type
6934                                                                             ,l_component_code
6935                                                                             ,l_component_type_code
6936                                                                             ,l_component_appl_id
6937                                                                             ,l_amb_context_code
6938                                                                             ,l_entity_code
6939                                                                             ,l_event_class_code
6940                                                                            )
6941                                     ,p_token_3                 => 'OWNER'
6942                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6943                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6944                                                                           ,p_lookup_code    => l_component_type_code
6945                                                                          )
6946                                     ,p_token_4                 => 'PRODUCT_NAME'
6947                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6948                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6949                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6950                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6951                                     ,p_ae_header_id            =>  NULL
6952                                        );
6953 
6954         IF (C_LEVEL_ERROR>= g_log_level) THEN
6955                  trace
6956                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6957                       ,p_level    => C_LEVEL_ERROR
6958                       ,p_module   => l_log_module);
6959         END IF;
6960       END IF;
6961    END IF;
6962    --
6963    --
6964    ------------------------------------------------------------------------------------------------
6965    -- 4219869 Business Flow
6966    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6967    -- Prior Entry.  Currently, the following code is always generated.
6968    ------------------------------------------------------------------------------------------------
6969    -- No ValidateCurrentLine for business flow method of Prior Entry
6970 
6971    ------------------------------------------------------------------------------------
6972    -- 4219869 Business Flow
6973    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6974    ------------------------------------------------------------------------------------
6975    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6976 
6977    ----------------------------------------------------------------------------------
6978    -- 4219869 Business Flow
6979    -- Update journal entry status -- Need to generate this within IF <condition>
6980    ----------------------------------------------------------------------------------
6981    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6982          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6983          ,p_balance_type_code => l_balance_type_code
6984          );
6985 
6986    -------------------------------------------------------------------------------------------
6987    -- 4262811 - Generate the Accrual Reversal lines
6988    -------------------------------------------------------------------------------------------
6989    BEGIN
6990       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6991                               (g_array_event(p_event_id).array_value_num('header_index'));
6992       IF l_acc_rev_flag IS NULL THEN
6993          l_acc_rev_flag := 'N';
6994       END IF;
6995    EXCEPTION
6996       WHEN OTHERS THEN
6997          l_acc_rev_flag := 'N';
6998    END;
6999    --
7000    IF (l_acc_rev_flag = 'Y') THEN
7001 
7002        -- 4645092  ------------------------------------------------------------------------------
7003        -- To allow MPA report to determine if it should generate report process
7004        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7005        ------------------------------------------------------------------------------------------
7006 
7007        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7008        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7009    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7010    -- call ADRs
7011    -- Bug 4922099
7012    --
7013    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7014         (NVL(l_actual_upg_option, 'N') = 'O') OR
7015         (NVL(l_enc_upg_option, 'N') = 'O')
7016       )
7017    THEN
7018    NULL;
7019    --
7020    --
7021    
7022    --
7023    --
7024    END IF;
7025 
7026        --
7027        -- Update the line information that should be overwritten
7028        --
7029        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7030                                          p_header_num   => 1);
7031        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7032 
7033        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7034 
7035        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7036           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7037        END IF;
7038 
7039       --
7040       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7041       --
7042       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7043           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7044       ELSE
7045           ---------------------------------------------------------------------------------------------------
7046           -- 4262811a Switch Sign
7047           ---------------------------------------------------------------------------------------------------
7048           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7049           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7050                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7051           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7052                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7053           -- 5132302
7054           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7055                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7056 
7057       END IF;
7058 
7059       -- 4955764
7060       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7061       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7062 
7063 
7064       XLA_AE_LINES_PKG.ValidateCurrentLine;
7065       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7066 
7067       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7068                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7069                ,p_balance_type_code => l_balance_type_code);
7070 
7071    END IF;
7072 
7073    -----------------------------------------------------------------------------------------
7074    -- 4262811 Multiperiod Accounting
7075    -----------------------------------------------------------------------------------------
7076      -- No MPA option is assigned.
7077 
7078 
7079 END IF;
7080 END IF;
7081 --
7082 
7083 --
7084 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7085    trace
7086       (p_msg      => 'END of AcctLineType_14'
7087       ,p_level    => C_LEVEL_PROCEDURE
7088       ,p_module   => l_log_module);
7089 END IF;
7090 --
7091 EXCEPTION
7092   WHEN xla_exceptions_pkg.application_exception THEN
7093       RAISE;
7094   WHEN OTHERS THEN
7095        xla_exceptions_pkg.raise_message
7096            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_14');
7097 END AcctLineType_14;
7098 --
7099 
7100 ---------------------------------------
7101 --
7102 -- PRIVATE FUNCTION
7103 --         AcctLineType_15
7104 --
7105 ---------------------------------------
7106 PROCEDURE AcctLineType_15 (
7107   p_application_id        IN NUMBER
7108  ,p_event_id              IN NUMBER
7109  ,p_calculate_acctd_flag  IN VARCHAR2
7110  ,p_calculate_g_l_flag    IN VARCHAR2
7111  ,p_actual_flag           IN OUT VARCHAR2
7112  ,p_balance_type_code     OUT VARCHAR2
7113  ,p_gain_or_loss_ref      OUT VARCHAR2
7114  
7115 --Accounting Line Type
7116  , p_source_7            IN NUMBER
7117 --DISTRIBUTION_IDENTIFIER
7118  , p_source_8            IN NUMBER
7119 --Distribution Type
7120  , p_source_9            IN VARCHAR2
7121  , p_source_9_meaning    IN VARCHAR2
7122 --Entered Currency Code
7123  , p_source_11            IN VARCHAR2
7124 --Purchasing Encumbrance Flag
7125  , p_source_16            IN VARCHAR2
7126 --Organization Encumbrance Reversal Indicator
7127  , p_source_17            IN VARCHAR2
7128 --Applied to Application ID
7129  , p_source_19            IN NUMBER
7130 --Applied to Distribution Link Type
7131  , p_source_20            IN VARCHAR2
7132 --Applied to Entity Code
7133  , p_source_21            IN VARCHAR2
7134 --TXN_PO_DISTRIBUTION_ID
7135  , p_source_22            IN NUMBER
7136 --Applied To Purchase Document Identifier
7137  , p_source_23            IN NUMBER
7138 --PO Budget Account
7139  , p_source_24            IN NUMBER
7140 --Encumbrance Reversal Amount Entered
7141  , p_source_25            IN NUMBER
7142 --Transaction Encumbrance Reversal Amount
7143  , p_source_26            IN NUMBER
7144 --Costing Encumbrance Upgrade Option
7145  , p_source_27            IN VARCHAR2
7146 --Purchasing Encumbrance Type Identifier
7147  , p_source_28            IN NUMBER
7148 --Reserved Flag
7149  , p_source_31            IN VARCHAR2
7150 )
7151 IS
7152 
7153 l_component_type              VARCHAR2(80);
7154 l_component_code              VARCHAR2(30);
7155 l_component_type_code         VARCHAR2(1);
7156 l_component_appl_id           INTEGER;
7157 l_amb_context_code            VARCHAR2(30);
7158 l_entity_code                 VARCHAR2(30);
7159 l_event_class_code            VARCHAR2(30);
7160 l_ae_header_id                NUMBER;
7161 l_event_type_code             VARCHAR2(30);
7162 l_line_definition_code        VARCHAR2(30);
7163 l_line_definition_owner_code  VARCHAR2(1);
7164 --
7165 -- adr variables
7166 l_segment                     VARCHAR2(30);
7167 l_ccid                        NUMBER;
7168 l_adr_transaction_coa_id      NUMBER;
7169 l_adr_accounting_coa_id       NUMBER;
7170 l_adr_flexfield_segment_code  VARCHAR2(30);
7171 l_adr_flex_value_set_id       NUMBER;
7172 l_adr_value_type_code         VARCHAR2(30);
7173 l_adr_value_combination_id    NUMBER;
7174 l_adr_value_segment_code      VARCHAR2(30);
7175 
7176 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7177 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7178 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7179 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7180 
7181 -- 4262811 Variables ------------------------------------------------------------------------------------------
7182 l_entered_amt_idx             NUMBER;
7183 l_accted_amt_idx              NUMBER;
7184 l_acc_rev_flag                VARCHAR2(1);
7185 l_accrual_line_num            NUMBER;
7186 l_tmp_amt                     NUMBER;
7187 l_acc_rev_natural_side_code   VARCHAR2(1);
7188 
7189 l_num_entries                 NUMBER;
7190 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7191 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7192 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7193 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7194 l_recog_line_1                NUMBER;
7195 l_recog_line_2                NUMBER;
7196 
7197 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7198 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7199 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7200 
7201 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7202 
7203 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7204 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7205 
7206 ---------------------------------------------------------------------------------------------------------------
7207 
7208 
7209 --
7210 -- bulk performance
7211 --
7212 l_balance_type_code           VARCHAR2(1);
7213 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7214 l_log_module                  VARCHAR2(240);
7215 
7216 --
7217 -- Upgrade strategy
7218 --
7219 l_actual_upg_option           VARCHAR2(1);
7220 l_enc_upg_option           VARCHAR2(1);
7221 
7222 --
7223 BEGIN
7224 --
7225 IF g_log_enabled THEN
7226       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_15';
7227 END IF;
7228 --
7229 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7230 
7231       trace
7232          (p_msg      => 'BEGIN of AcctLineType_15'
7233          ,p_level    => C_LEVEL_PROCEDURE
7234          ,p_module   => l_log_module);
7235 
7236 END IF;
7237 --
7238 l_component_type             := 'AMB_JLT';
7239 l_component_code             := 'RELIEVE_PO_ENC_ON_DTI';
7240 l_component_type_code        := 'S';
7241 l_component_appl_id          :=  707;
7242 l_amb_context_code           := 'DEFAULT';
7243 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
7244 l_event_class_code           := 'PURCHASE_ORDER';
7245 l_event_type_code            := 'PO_DEL_ADJ';
7246 l_line_definition_owner_code := 'S';
7247 l_line_definition_code       := 'ENC_PO_DEL_INV_DEL_ADJ';
7248 --
7249 l_balance_type_code          := 'E';
7250 l_segment                     := NULL;
7251 l_ccid                        := NULL;
7252 l_adr_transaction_coa_id      := NULL;
7253 l_adr_accounting_coa_id       := NULL;
7254 l_adr_flexfield_segment_code  := NULL;
7255 l_adr_flex_value_set_id       := NULL;
7256 l_adr_value_type_code         := NULL;
7257 l_adr_value_combination_id    := NULL;
7258 l_adr_value_segment_code      := NULL;
7259 
7260 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
7261 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
7262 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
7263 l_budgetary_control_flag     := 'Y';
7264 
7265 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7266 l_bflow_applied_to_amt       := NULL; -- 5132302
7267 l_entered_amt_idx            := NULL;          -- 4262811
7268 l_accted_amt_idx             := NULL;          -- 4262811
7269 l_acc_rev_flag               := NULL;          -- 4262811
7270 l_accrual_line_num           := NULL;          -- 4262811
7271 l_tmp_amt                    := NULL;          -- 4262811
7272 --
7273  
7274 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7275     l_balance_type_code <> 'B' THEN
7276 IF NVL(p_source_16,'
7277 ') =  'Y' AND 
7278 NVL(p_source_31,'
7279 ') =  'Y' AND 
7280 NVL(p_source_17,'
7281 ') =  'Y' AND 
7282 NVL(
7283 xla_ae_sources_pkg.GetSystemSourceChar(
7284    p_source_code           => 'XLA_EVENT_TYPE_CODE'
7285  , p_source_type_code      => 'Y'
7286  , p_source_application_id =>  602
7287 ),'
7288 ') =  'PO_DEL_INV' AND 
7289 NVL(p_source_7,9E125) =  15
7290  THEN 
7291 
7292    --
7293    XLA_AE_LINES_PKG.SetNewLine;
7294 
7295    p_balance_type_code          := l_balance_type_code;
7296    -- set the flag so later we will know whether the gain loss line needs to be created
7297    
7298    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7299      p_actual_flag :='A';
7300    END IF;
7301 
7302    --
7303    -- bulk performance
7304    --
7305    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7306                                       p_header_num   => 0); -- 4262811
7307    --
7308    -- set accounting line options
7309    --
7310    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7311            p_natural_side_code          => 'C'
7312          , p_gain_or_loss_flag          => 'N'
7313          , p_gl_transfer_mode_code      => 'S'
7314          , p_acct_entry_type_code       => 'E'
7315          , p_switch_side_flag           => 'N'
7316          , p_merge_duplicate_code       => 'N'
7317          );
7318    --
7319    l_acc_rev_natural_side_code := 'D';  -- 4262811
7320    -- 
7321    --
7322    -- set accounting line type info
7323    --
7324    xla_ae_lines_pkg.SetAcctLineType
7325       (p_component_type             => l_component_type
7326       ,p_event_type_code            => l_event_type_code
7327       ,p_line_definition_owner_code => l_line_definition_owner_code
7328       ,p_line_definition_code       => l_line_definition_code
7329       ,p_accounting_line_code       => l_component_code
7330       ,p_accounting_line_type_code  => l_component_type_code
7331       ,p_accounting_line_appl_id    => l_component_appl_id
7332       ,p_amb_context_code           => l_amb_context_code
7333       ,p_entity_code                => l_entity_code
7334       ,p_event_class_code           => l_event_class_code);
7335    --
7336    -- set accounting class
7337    --
7338    xla_ae_lines_pkg.SetAcctClass(
7339            p_accounting_class_code  => 'PURCHASE_ORDER'
7340          , p_ae_header_id           => l_ae_header_id
7341          );
7342 
7343    --
7344    -- set rounding class
7345    --
7346    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7347                       'PURCHASE_ORDER';
7348 
7349    --
7350    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7351    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7352    --
7353    -- bulk performance
7354    --
7355    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7356 
7357    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7358       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7359 
7360    -- 4955764
7361    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7362       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7363 
7364    -- 4458381 Public Sector Enh
7365    
7366    --
7367    -- set accounting attributes for the line type
7368    --
7369    l_entered_amt_idx := 17;
7370    l_accted_amt_idx  := 19;
7371    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7372    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
7373    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
7374    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
7375    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
7376    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
7377    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
7378    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
7379    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_22);
7380    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
7381    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
7382    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
7383    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
7384    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
7385    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
7386    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
7387    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
7388    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
7389    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
7390    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
7391    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
7392    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
7393    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
7394    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
7395    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
7396    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
7397    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
7398    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
7399    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
7400    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
7401    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
7402    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
7403    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
7404    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
7405    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
7406    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
7407    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
7408    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
7409    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
7410    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
7411    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
7412    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
7413    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
7414 
7415    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7416    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7417 
7418    ---------------------------------------------------------------------------------------------------------------
7419    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7420    ---------------------------------------------------------------------------------------------------------------
7421    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7422 
7423    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7424    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7425 
7426    IF xla_accounting_cache_pkg.GetValueChar
7427          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7428          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7429    AND l_bflow_method_code = 'PRIOR_ENTRY'
7430 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7431    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7432          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7433        )
7434    THEN
7435          xla_ae_lines_pkg.BflowUpgEntry
7436            (p_business_method_code    => l_bflow_method_code
7437            ,p_business_class_code     => l_bflow_class_code
7438            ,p_balance_type            => l_balance_type_code);
7439    ELSE
7440       NULL;
7441 XLA_AE_LINES_PKG.business_flow_validation(
7442                                 p_business_method_code     => l_bflow_method_code
7443                                ,p_business_class_code      => l_bflow_class_code
7444                                ,p_inherit_description_flag => l_inherit_desc_flag);
7445    END IF;
7446 
7447    --
7448    -- call analytical criteria
7449    --
7450    -- Inherited Analytical Criteria for business flow method of Prior Entry.
7451    --
7452    -- call description
7453    --
7454    -- No description or it is inherited.
7455    --
7456    -- call ADRs
7457    -- Bug 4922099
7458    --
7459    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7460         (NVL(l_actual_upg_option, 'N') = 'O') OR
7461         (NVL(l_enc_upg_option, 'N') = 'O')
7462       )
7463    THEN
7464    NULL;
7465    --
7466    --
7467    
7468    --
7469    --
7470    END IF;
7471    --
7472    -- Bug 4922099
7473    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7474           (NVL(l_enc_upg_option, 'N') = 'O')
7475         ) AND
7476         (l_bflow_method_code = 'PRIOR_ENTRY')
7477       )
7478    THEN
7479       IF
7480       --
7481       1 = 1
7482       --
7483       THEN
7484       xla_accounting_err_pkg.build_message
7485                                     (p_appli_s_name            => 'XLA'
7486                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7487                                     ,p_token_1                 => 'LINE_NUMBER'
7488                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7489                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7490                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7491                                                                              l_component_type
7492                                                                             ,l_component_code
7493                                                                             ,l_component_type_code
7494                                                                             ,l_component_appl_id
7495                                                                             ,l_amb_context_code
7496                                                                             ,l_entity_code
7497                                                                             ,l_event_class_code
7498                                                                            )
7499                                     ,p_token_3                 => 'OWNER'
7500                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7501                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7502                                                                           ,p_lookup_code    => l_component_type_code
7503                                                                          )
7504                                     ,p_token_4                 => 'PRODUCT_NAME'
7505                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7506                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7507                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7508                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7509                                     ,p_ae_header_id            =>  NULL
7510                                        );
7511 
7512         IF (C_LEVEL_ERROR>= g_log_level) THEN
7513                  trace
7514                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7515                       ,p_level    => C_LEVEL_ERROR
7516                       ,p_module   => l_log_module);
7517         END IF;
7518       END IF;
7519    END IF;
7520    --
7521    --
7522    ------------------------------------------------------------------------------------------------
7523    -- 4219869 Business Flow
7524    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7525    -- Prior Entry.  Currently, the following code is always generated.
7526    ------------------------------------------------------------------------------------------------
7527    -- No ValidateCurrentLine for business flow method of Prior Entry
7528 
7529    ------------------------------------------------------------------------------------
7530    -- 4219869 Business Flow
7531    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7532    ------------------------------------------------------------------------------------
7533    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7534 
7535    ----------------------------------------------------------------------------------
7536    -- 4219869 Business Flow
7537    -- Update journal entry status -- Need to generate this within IF <condition>
7538    ----------------------------------------------------------------------------------
7539    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7540          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7541          ,p_balance_type_code => l_balance_type_code
7542          );
7543 
7544    -------------------------------------------------------------------------------------------
7545    -- 4262811 - Generate the Accrual Reversal lines
7546    -------------------------------------------------------------------------------------------
7547    BEGIN
7548       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7549                               (g_array_event(p_event_id).array_value_num('header_index'));
7550       IF l_acc_rev_flag IS NULL THEN
7551          l_acc_rev_flag := 'N';
7552       END IF;
7553    EXCEPTION
7554       WHEN OTHERS THEN
7555          l_acc_rev_flag := 'N';
7556    END;
7557    --
7558    IF (l_acc_rev_flag = 'Y') THEN
7559 
7560        -- 4645092  ------------------------------------------------------------------------------
7561        -- To allow MPA report to determine if it should generate report process
7562        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7563        ------------------------------------------------------------------------------------------
7564 
7565        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7566        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7567    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7568    -- call ADRs
7569    -- Bug 4922099
7570    --
7571    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7572         (NVL(l_actual_upg_option, 'N') = 'O') OR
7573         (NVL(l_enc_upg_option, 'N') = 'O')
7574       )
7575    THEN
7576    NULL;
7577    --
7578    --
7579    
7580    --
7581    --
7582    END IF;
7583 
7584        --
7585        -- Update the line information that should be overwritten
7586        --
7587        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7588                                          p_header_num   => 1);
7589        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7590 
7591        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7592 
7593        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7594           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7595        END IF;
7596 
7597       --
7598       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7599       --
7600       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7601           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7602       ELSE
7603           ---------------------------------------------------------------------------------------------------
7604           -- 4262811a Switch Sign
7605           ---------------------------------------------------------------------------------------------------
7606           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7607           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7608                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7609           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7610                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7611           -- 5132302
7612           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7613                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7614 
7615       END IF;
7616 
7617       -- 4955764
7618       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7619       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7620 
7621 
7622       XLA_AE_LINES_PKG.ValidateCurrentLine;
7623       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7624 
7625       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7626                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7627                ,p_balance_type_code => l_balance_type_code);
7628 
7629    END IF;
7630 
7631    -----------------------------------------------------------------------------------------
7632    -- 4262811 Multiperiod Accounting
7633    -----------------------------------------------------------------------------------------
7634      -- No MPA option is assigned.
7635 
7636 
7637 END IF;
7638 END IF;
7639 --
7640 
7641 --
7642 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7643    trace
7644       (p_msg      => 'END of AcctLineType_15'
7645       ,p_level    => C_LEVEL_PROCEDURE
7646       ,p_module   => l_log_module);
7647 END IF;
7648 --
7649 EXCEPTION
7650   WHEN xla_exceptions_pkg.application_exception THEN
7651       RAISE;
7652   WHEN OTHERS THEN
7653        xla_exceptions_pkg.raise_message
7654            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_15');
7655 END AcctLineType_15;
7656 --
7657 
7658 ---------------------------------------
7659 --
7660 -- PRIVATE FUNCTION
7661 --         AcctLineType_16
7662 --
7663 ---------------------------------------
7664 PROCEDURE AcctLineType_16 (
7665   p_application_id        IN NUMBER
7666  ,p_event_id              IN NUMBER
7667  ,p_calculate_acctd_flag  IN VARCHAR2
7668  ,p_calculate_g_l_flag    IN VARCHAR2
7669  ,p_actual_flag           IN OUT VARCHAR2
7670  ,p_balance_type_code     OUT VARCHAR2
7671  ,p_gain_or_loss_ref      OUT VARCHAR2
7672  
7673 --Accounting Line Type
7674  , p_source_7            IN NUMBER
7675 --DISTRIBUTION_IDENTIFIER
7676  , p_source_8            IN NUMBER
7677 --Distribution Type
7678  , p_source_9            IN VARCHAR2
7679  , p_source_9_meaning    IN VARCHAR2
7680 --Entered Currency Code
7681  , p_source_11            IN VARCHAR2
7682 --Purchasing Encumbrance Flag
7683  , p_source_16            IN VARCHAR2
7684 --Organization Encumbrance Reversal Indicator
7685  , p_source_17            IN VARCHAR2
7686 --Applied to Application ID
7687  , p_source_19            IN NUMBER
7688 --Applied to Distribution Link Type
7689  , p_source_20            IN VARCHAR2
7690 --Applied to Entity Code
7691  , p_source_21            IN VARCHAR2
7692 --TXN_PO_DISTRIBUTION_ID
7693  , p_source_22            IN NUMBER
7694 --Applied To Purchase Document Identifier
7695  , p_source_23            IN NUMBER
7696 --PO Budget Account
7697  , p_source_24            IN NUMBER
7698 --Encumbrance Reversal Amount Entered
7699  , p_source_25            IN NUMBER
7700 --Transaction Encumbrance Reversal Amount
7701  , p_source_26            IN NUMBER
7702 --Costing Encumbrance Upgrade Option
7703  , p_source_27            IN VARCHAR2
7704 --Purchasing Encumbrance Type Identifier
7705  , p_source_28            IN NUMBER
7706 --Reserved Flag
7707  , p_source_31            IN VARCHAR2
7708 )
7709 IS
7710 
7711 l_component_type              VARCHAR2(80);
7712 l_component_code              VARCHAR2(30);
7713 l_component_type_code         VARCHAR2(1);
7714 l_component_appl_id           INTEGER;
7715 l_amb_context_code            VARCHAR2(30);
7716 l_entity_code                 VARCHAR2(30);
7717 l_event_class_code            VARCHAR2(30);
7718 l_ae_header_id                NUMBER;
7719 l_event_type_code             VARCHAR2(30);
7720 l_line_definition_code        VARCHAR2(30);
7721 l_line_definition_owner_code  VARCHAR2(1);
7722 --
7723 -- adr variables
7724 l_segment                     VARCHAR2(30);
7725 l_ccid                        NUMBER;
7726 l_adr_transaction_coa_id      NUMBER;
7727 l_adr_accounting_coa_id       NUMBER;
7728 l_adr_flexfield_segment_code  VARCHAR2(30);
7729 l_adr_flex_value_set_id       NUMBER;
7730 l_adr_value_type_code         VARCHAR2(30);
7731 l_adr_value_combination_id    NUMBER;
7732 l_adr_value_segment_code      VARCHAR2(30);
7733 
7734 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7735 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7736 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7737 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7738 
7739 -- 4262811 Variables ------------------------------------------------------------------------------------------
7740 l_entered_amt_idx             NUMBER;
7741 l_accted_amt_idx              NUMBER;
7742 l_acc_rev_flag                VARCHAR2(1);
7743 l_accrual_line_num            NUMBER;
7744 l_tmp_amt                     NUMBER;
7745 l_acc_rev_natural_side_code   VARCHAR2(1);
7746 
7747 l_num_entries                 NUMBER;
7748 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7749 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7750 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7751 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7752 l_recog_line_1                NUMBER;
7753 l_recog_line_2                NUMBER;
7754 
7755 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7756 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7757 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7758 
7759 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7760 
7761 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7762 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7763 
7764 ---------------------------------------------------------------------------------------------------------------
7765 
7766 
7767 --
7768 -- bulk performance
7769 --
7770 l_balance_type_code           VARCHAR2(1);
7771 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7772 l_log_module                  VARCHAR2(240);
7773 
7774 --
7775 -- Upgrade strategy
7776 --
7777 l_actual_upg_option           VARCHAR2(1);
7778 l_enc_upg_option           VARCHAR2(1);
7779 
7780 --
7781 BEGIN
7782 --
7783 IF g_log_enabled THEN
7784       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_16';
7785 END IF;
7786 --
7787 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7788 
7789       trace
7790          (p_msg      => 'BEGIN of AcctLineType_16'
7791          ,p_level    => C_LEVEL_PROCEDURE
7792          ,p_module   => l_log_module);
7793 
7794 END IF;
7795 --
7796 l_component_type             := 'AMB_JLT';
7797 l_component_code             := 'RELIEVE_PO_ENC_ON_DTI';
7798 l_component_type_code        := 'S';
7799 l_component_appl_id          :=  707;
7800 l_amb_context_code           := 'DEFAULT';
7801 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
7802 l_event_class_code           := 'PURCHASE_ORDER';
7803 l_event_type_code            := 'LOG_PO_DEL_INV';
7804 l_line_definition_owner_code := 'S';
7805 l_line_definition_code       := 'ENC_PO_DEL_INV_LOG_DEL';
7806 --
7807 l_balance_type_code          := 'E';
7808 l_segment                     := NULL;
7809 l_ccid                        := NULL;
7810 l_adr_transaction_coa_id      := NULL;
7811 l_adr_accounting_coa_id       := NULL;
7812 l_adr_flexfield_segment_code  := NULL;
7813 l_adr_flex_value_set_id       := NULL;
7814 l_adr_value_type_code         := NULL;
7815 l_adr_value_combination_id    := NULL;
7816 l_adr_value_segment_code      := NULL;
7817 
7818 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
7819 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
7820 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
7821 l_budgetary_control_flag     := 'Y';
7822 
7823 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7824 l_bflow_applied_to_amt       := NULL; -- 5132302
7825 l_entered_amt_idx            := NULL;          -- 4262811
7826 l_accted_amt_idx             := NULL;          -- 4262811
7827 l_acc_rev_flag               := NULL;          -- 4262811
7828 l_accrual_line_num           := NULL;          -- 4262811
7829 l_tmp_amt                    := NULL;          -- 4262811
7830 --
7831  
7832 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7833     l_balance_type_code <> 'B' THEN
7834 IF NVL(p_source_16,'
7835 ') =  'Y' AND 
7836 NVL(p_source_31,'
7837 ') =  'Y' AND 
7838 NVL(p_source_17,'
7839 ') =  'Y' AND 
7840 NVL(
7841 xla_ae_sources_pkg.GetSystemSourceChar(
7842    p_source_code           => 'XLA_EVENT_TYPE_CODE'
7843  , p_source_type_code      => 'Y'
7844  , p_source_application_id =>  602
7845 ),'
7846 ') =  'PO_DEL_INV' AND 
7847 NVL(p_source_7,9E125) =  15
7848  THEN 
7849 
7850    --
7851    XLA_AE_LINES_PKG.SetNewLine;
7852 
7853    p_balance_type_code          := l_balance_type_code;
7854    -- set the flag so later we will know whether the gain loss line needs to be created
7855    
7856    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7857      p_actual_flag :='A';
7858    END IF;
7859 
7860    --
7861    -- bulk performance
7862    --
7863    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7864                                       p_header_num   => 0); -- 4262811
7865    --
7866    -- set accounting line options
7867    --
7868    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7869            p_natural_side_code          => 'C'
7870          , p_gain_or_loss_flag          => 'N'
7871          , p_gl_transfer_mode_code      => 'S'
7872          , p_acct_entry_type_code       => 'E'
7873          , p_switch_side_flag           => 'N'
7874          , p_merge_duplicate_code       => 'N'
7875          );
7876    --
7877    l_acc_rev_natural_side_code := 'D';  -- 4262811
7878    -- 
7879    --
7880    -- set accounting line type info
7881    --
7882    xla_ae_lines_pkg.SetAcctLineType
7883       (p_component_type             => l_component_type
7884       ,p_event_type_code            => l_event_type_code
7885       ,p_line_definition_owner_code => l_line_definition_owner_code
7886       ,p_line_definition_code       => l_line_definition_code
7887       ,p_accounting_line_code       => l_component_code
7888       ,p_accounting_line_type_code  => l_component_type_code
7889       ,p_accounting_line_appl_id    => l_component_appl_id
7890       ,p_amb_context_code           => l_amb_context_code
7891       ,p_entity_code                => l_entity_code
7892       ,p_event_class_code           => l_event_class_code);
7893    --
7894    -- set accounting class
7895    --
7896    xla_ae_lines_pkg.SetAcctClass(
7897            p_accounting_class_code  => 'PURCHASE_ORDER'
7898          , p_ae_header_id           => l_ae_header_id
7899          );
7900 
7901    --
7902    -- set rounding class
7903    --
7904    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7905                       'PURCHASE_ORDER';
7906 
7907    --
7908    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7909    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7910    --
7911    -- bulk performance
7912    --
7913    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7914 
7915    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7916       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7917 
7918    -- 4955764
7919    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7920       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7921 
7922    -- 4458381 Public Sector Enh
7923    
7924    --
7925    -- set accounting attributes for the line type
7926    --
7927    l_entered_amt_idx := 17;
7928    l_accted_amt_idx  := 19;
7929    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7930    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
7931    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
7932    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
7933    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
7934    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
7935    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
7936    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
7937    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_22);
7938    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
7939    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
7940    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
7941    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
7942    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
7943    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
7944    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
7945    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
7946    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
7947    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
7948    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
7949    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
7950    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
7951    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
7952    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
7953    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
7954    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
7955    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
7956    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
7957    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
7958    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
7959    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
7960    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
7961    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
7962    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
7963    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
7964    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
7965    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
7966    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
7967    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
7968    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
7969    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
7970    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
7971    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
7972 
7973    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7974    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7975 
7976    ---------------------------------------------------------------------------------------------------------------
7977    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7978    ---------------------------------------------------------------------------------------------------------------
7979    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7980 
7981    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7982    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7983 
7984    IF xla_accounting_cache_pkg.GetValueChar
7985          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7986          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7987    AND l_bflow_method_code = 'PRIOR_ENTRY'
7988 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7989    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7990          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7991        )
7992    THEN
7993          xla_ae_lines_pkg.BflowUpgEntry
7994            (p_business_method_code    => l_bflow_method_code
7995            ,p_business_class_code     => l_bflow_class_code
7996            ,p_balance_type            => l_balance_type_code);
7997    ELSE
7998       NULL;
7999 XLA_AE_LINES_PKG.business_flow_validation(
8000                                 p_business_method_code     => l_bflow_method_code
8001                                ,p_business_class_code      => l_bflow_class_code
8002                                ,p_inherit_description_flag => l_inherit_desc_flag);
8003    END IF;
8004 
8005    --
8006    -- call analytical criteria
8007    --
8008    -- Inherited Analytical Criteria for business flow method of Prior Entry.
8009    --
8010    -- call description
8011    --
8012    -- No description or it is inherited.
8013    --
8014    -- call ADRs
8015    -- Bug 4922099
8016    --
8017    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8018         (NVL(l_actual_upg_option, 'N') = 'O') OR
8019         (NVL(l_enc_upg_option, 'N') = 'O')
8020       )
8021    THEN
8022    NULL;
8023    --
8024    --
8025    
8026    --
8027    --
8028    END IF;
8029    --
8030    -- Bug 4922099
8031    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8032           (NVL(l_enc_upg_option, 'N') = 'O')
8033         ) AND
8034         (l_bflow_method_code = 'PRIOR_ENTRY')
8035       )
8036    THEN
8037       IF
8038       --
8039       1 = 1
8040       --
8041       THEN
8042       xla_accounting_err_pkg.build_message
8043                                     (p_appli_s_name            => 'XLA'
8044                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8045                                     ,p_token_1                 => 'LINE_NUMBER'
8046                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8047                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8048                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8049                                                                              l_component_type
8050                                                                             ,l_component_code
8051                                                                             ,l_component_type_code
8052                                                                             ,l_component_appl_id
8053                                                                             ,l_amb_context_code
8054                                                                             ,l_entity_code
8055                                                                             ,l_event_class_code
8056                                                                            )
8057                                     ,p_token_3                 => 'OWNER'
8058                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8059                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8060                                                                           ,p_lookup_code    => l_component_type_code
8061                                                                          )
8062                                     ,p_token_4                 => 'PRODUCT_NAME'
8063                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8064                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8065                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8066                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8067                                     ,p_ae_header_id            =>  NULL
8068                                        );
8069 
8070         IF (C_LEVEL_ERROR>= g_log_level) THEN
8071                  trace
8072                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8073                       ,p_level    => C_LEVEL_ERROR
8074                       ,p_module   => l_log_module);
8075         END IF;
8076       END IF;
8077    END IF;
8078    --
8079    --
8080    ------------------------------------------------------------------------------------------------
8081    -- 4219869 Business Flow
8082    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8083    -- Prior Entry.  Currently, the following code is always generated.
8084    ------------------------------------------------------------------------------------------------
8085    -- No ValidateCurrentLine for business flow method of Prior Entry
8086 
8087    ------------------------------------------------------------------------------------
8088    -- 4219869 Business Flow
8089    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8090    ------------------------------------------------------------------------------------
8091    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8092 
8093    ----------------------------------------------------------------------------------
8094    -- 4219869 Business Flow
8095    -- Update journal entry status -- Need to generate this within IF <condition>
8096    ----------------------------------------------------------------------------------
8097    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8098          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8099          ,p_balance_type_code => l_balance_type_code
8100          );
8101 
8102    -------------------------------------------------------------------------------------------
8103    -- 4262811 - Generate the Accrual Reversal lines
8104    -------------------------------------------------------------------------------------------
8105    BEGIN
8106       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8107                               (g_array_event(p_event_id).array_value_num('header_index'));
8108       IF l_acc_rev_flag IS NULL THEN
8109          l_acc_rev_flag := 'N';
8110       END IF;
8111    EXCEPTION
8112       WHEN OTHERS THEN
8113          l_acc_rev_flag := 'N';
8114    END;
8115    --
8116    IF (l_acc_rev_flag = 'Y') THEN
8117 
8118        -- 4645092  ------------------------------------------------------------------------------
8119        -- To allow MPA report to determine if it should generate report process
8120        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8121        ------------------------------------------------------------------------------------------
8122 
8123        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8124        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8125    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
8126    -- call ADRs
8127    -- Bug 4922099
8128    --
8129    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8130         (NVL(l_actual_upg_option, 'N') = 'O') OR
8131         (NVL(l_enc_upg_option, 'N') = 'O')
8132       )
8133    THEN
8134    NULL;
8135    --
8136    --
8137    
8138    --
8139    --
8140    END IF;
8141 
8142        --
8143        -- Update the line information that should be overwritten
8144        --
8145        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8146                                          p_header_num   => 1);
8147        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8148 
8149        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8150 
8151        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8152           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8153        END IF;
8154 
8155       --
8156       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8157       --
8158       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8159           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8160       ELSE
8161           ---------------------------------------------------------------------------------------------------
8162           -- 4262811a Switch Sign
8163           ---------------------------------------------------------------------------------------------------
8164           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8165           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8166                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8167           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8168                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8169           -- 5132302
8170           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8171                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8172 
8173       END IF;
8174 
8175       -- 4955764
8176       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8177       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8178 
8179 
8180       XLA_AE_LINES_PKG.ValidateCurrentLine;
8181       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8182 
8183       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8184                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8185                ,p_balance_type_code => l_balance_type_code);
8186 
8187    END IF;
8188 
8189    -----------------------------------------------------------------------------------------
8190    -- 4262811 Multiperiod Accounting
8191    -----------------------------------------------------------------------------------------
8192      -- No MPA option is assigned.
8193 
8194 
8195 END IF;
8196 END IF;
8197 --
8198 
8199 --
8200 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8201    trace
8202       (p_msg      => 'END of AcctLineType_16'
8203       ,p_level    => C_LEVEL_PROCEDURE
8204       ,p_module   => l_log_module);
8205 END IF;
8206 --
8207 EXCEPTION
8208   WHEN xla_exceptions_pkg.application_exception THEN
8209       RAISE;
8210   WHEN OTHERS THEN
8211        xla_exceptions_pkg.raise_message
8212            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_16');
8213 END AcctLineType_16;
8214 --
8215 
8216 ---------------------------------------
8217 --
8218 -- PRIVATE FUNCTION
8219 --         AcctLineType_17
8220 --
8221 ---------------------------------------
8222 PROCEDURE AcctLineType_17 (
8223   p_application_id        IN NUMBER
8224  ,p_event_id              IN NUMBER
8225  ,p_calculate_acctd_flag  IN VARCHAR2
8226  ,p_calculate_g_l_flag    IN VARCHAR2
8227  ,p_actual_flag           IN OUT VARCHAR2
8228  ,p_balance_type_code     OUT VARCHAR2
8229  ,p_gain_or_loss_ref      OUT VARCHAR2
8230  
8231 --Accounting Line Type
8232  , p_source_7            IN NUMBER
8233 --DISTRIBUTION_IDENTIFIER
8234  , p_source_8            IN NUMBER
8235 --Distribution Type
8236  , p_source_9            IN VARCHAR2
8237  , p_source_9_meaning    IN VARCHAR2
8238 --Entered Currency Code
8239  , p_source_11            IN VARCHAR2
8240 --Purchasing Encumbrance Flag
8241  , p_source_16            IN VARCHAR2
8242 --Organization Encumbrance Reversal Indicator
8243  , p_source_17            IN VARCHAR2
8244 --Applied to Application ID
8245  , p_source_19            IN NUMBER
8246 --Applied to Distribution Link Type
8247  , p_source_20            IN VARCHAR2
8248 --Applied to Entity Code
8249  , p_source_21            IN VARCHAR2
8250 --TXN_PO_DISTRIBUTION_ID
8251  , p_source_22            IN NUMBER
8252 --Applied To Purchase Document Identifier
8253  , p_source_23            IN NUMBER
8254 --PO Budget Account
8255  , p_source_24            IN NUMBER
8256 --Encumbrance Reversal Amount Entered
8257  , p_source_25            IN NUMBER
8258 --Transaction Encumbrance Reversal Amount
8259  , p_source_26            IN NUMBER
8260 --Costing Encumbrance Upgrade Option
8261  , p_source_27            IN VARCHAR2
8262 --Purchasing Encumbrance Type Identifier
8263  , p_source_28            IN NUMBER
8264 --Reserved Flag
8265  , p_source_31            IN VARCHAR2
8266 )
8267 IS
8268 
8269 l_component_type              VARCHAR2(80);
8270 l_component_code              VARCHAR2(30);
8271 l_component_type_code         VARCHAR2(1);
8272 l_component_appl_id           INTEGER;
8273 l_amb_context_code            VARCHAR2(30);
8274 l_entity_code                 VARCHAR2(30);
8275 l_event_class_code            VARCHAR2(30);
8276 l_ae_header_id                NUMBER;
8277 l_event_type_code             VARCHAR2(30);
8278 l_line_definition_code        VARCHAR2(30);
8279 l_line_definition_owner_code  VARCHAR2(1);
8280 --
8281 -- adr variables
8282 l_segment                     VARCHAR2(30);
8283 l_ccid                        NUMBER;
8284 l_adr_transaction_coa_id      NUMBER;
8285 l_adr_accounting_coa_id       NUMBER;
8286 l_adr_flexfield_segment_code  VARCHAR2(30);
8287 l_adr_flex_value_set_id       NUMBER;
8288 l_adr_value_type_code         VARCHAR2(30);
8289 l_adr_value_combination_id    NUMBER;
8290 l_adr_value_segment_code      VARCHAR2(30);
8291 
8292 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8293 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8294 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8295 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8296 
8297 -- 4262811 Variables ------------------------------------------------------------------------------------------
8298 l_entered_amt_idx             NUMBER;
8299 l_accted_amt_idx              NUMBER;
8300 l_acc_rev_flag                VARCHAR2(1);
8301 l_accrual_line_num            NUMBER;
8302 l_tmp_amt                     NUMBER;
8303 l_acc_rev_natural_side_code   VARCHAR2(1);
8304 
8305 l_num_entries                 NUMBER;
8306 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8307 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8308 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8309 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8310 l_recog_line_1                NUMBER;
8311 l_recog_line_2                NUMBER;
8312 
8313 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8314 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8315 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8316 
8317 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8318 
8319 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8320 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8321 
8322 ---------------------------------------------------------------------------------------------------------------
8323 
8324 
8325 --
8326 -- bulk performance
8327 --
8328 l_balance_type_code           VARCHAR2(1);
8329 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8330 l_log_module                  VARCHAR2(240);
8331 
8332 --
8333 -- Upgrade strategy
8334 --
8335 l_actual_upg_option           VARCHAR2(1);
8336 l_enc_upg_option           VARCHAR2(1);
8337 
8338 --
8339 BEGIN
8340 --
8341 IF g_log_enabled THEN
8342       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_17';
8343 END IF;
8344 --
8345 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8346 
8347       trace
8348          (p_msg      => 'BEGIN of AcctLineType_17'
8349          ,p_level    => C_LEVEL_PROCEDURE
8350          ,p_module   => l_log_module);
8351 
8352 END IF;
8353 --
8354 l_component_type             := 'AMB_JLT';
8355 l_component_code             := 'RELIEVE_PO_ENC_ON_DTI';
8356 l_component_type_code        := 'S';
8357 l_component_appl_id          :=  707;
8358 l_amb_context_code           := 'DEFAULT';
8359 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
8360 l_event_class_code           := 'PURCHASE_ORDER';
8361 l_event_type_code            := 'LOG_RET_RI_INV';
8362 l_line_definition_owner_code := 'S';
8363 l_line_definition_code       := 'ENC_PO_DEL_INV_LOG_RET_RI';
8364 --
8365 l_balance_type_code          := 'E';
8366 l_segment                     := NULL;
8367 l_ccid                        := NULL;
8368 l_adr_transaction_coa_id      := NULL;
8369 l_adr_accounting_coa_id       := NULL;
8370 l_adr_flexfield_segment_code  := NULL;
8371 l_adr_flex_value_set_id       := NULL;
8372 l_adr_value_type_code         := NULL;
8373 l_adr_value_combination_id    := NULL;
8374 l_adr_value_segment_code      := NULL;
8375 
8376 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
8377 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
8378 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
8379 l_budgetary_control_flag     := 'Y';
8380 
8381 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8382 l_bflow_applied_to_amt       := NULL; -- 5132302
8383 l_entered_amt_idx            := NULL;          -- 4262811
8384 l_accted_amt_idx             := NULL;          -- 4262811
8385 l_acc_rev_flag               := NULL;          -- 4262811
8386 l_accrual_line_num           := NULL;          -- 4262811
8387 l_tmp_amt                    := NULL;          -- 4262811
8388 --
8389  
8390 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8391     l_balance_type_code <> 'B' THEN
8392 IF NVL(p_source_16,'
8393 ') =  'Y' AND 
8394 NVL(p_source_31,'
8395 ') =  'Y' AND 
8396 NVL(p_source_17,'
8397 ') =  'Y' AND 
8398 NVL(
8399 xla_ae_sources_pkg.GetSystemSourceChar(
8400    p_source_code           => 'XLA_EVENT_TYPE_CODE'
8401  , p_source_type_code      => 'Y'
8402  , p_source_application_id =>  602
8403 ),'
8404 ') =  'PO_DEL_INV' AND 
8405 NVL(p_source_7,9E125) =  15
8406  THEN 
8407 
8408    --
8409    XLA_AE_LINES_PKG.SetNewLine;
8410 
8411    p_balance_type_code          := l_balance_type_code;
8412    -- set the flag so later we will know whether the gain loss line needs to be created
8413    
8414    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8415      p_actual_flag :='A';
8416    END IF;
8417 
8418    --
8419    -- bulk performance
8420    --
8421    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8422                                       p_header_num   => 0); -- 4262811
8423    --
8424    -- set accounting line options
8425    --
8426    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8427            p_natural_side_code          => 'C'
8428          , p_gain_or_loss_flag          => 'N'
8429          , p_gl_transfer_mode_code      => 'S'
8430          , p_acct_entry_type_code       => 'E'
8431          , p_switch_side_flag           => 'N'
8432          , p_merge_duplicate_code       => 'N'
8433          );
8434    --
8435    l_acc_rev_natural_side_code := 'D';  -- 4262811
8436    -- 
8437    --
8438    -- set accounting line type info
8439    --
8440    xla_ae_lines_pkg.SetAcctLineType
8441       (p_component_type             => l_component_type
8442       ,p_event_type_code            => l_event_type_code
8443       ,p_line_definition_owner_code => l_line_definition_owner_code
8444       ,p_line_definition_code       => l_line_definition_code
8445       ,p_accounting_line_code       => l_component_code
8446       ,p_accounting_line_type_code  => l_component_type_code
8447       ,p_accounting_line_appl_id    => l_component_appl_id
8448       ,p_amb_context_code           => l_amb_context_code
8449       ,p_entity_code                => l_entity_code
8450       ,p_event_class_code           => l_event_class_code);
8451    --
8452    -- set accounting class
8453    --
8454    xla_ae_lines_pkg.SetAcctClass(
8455            p_accounting_class_code  => 'PURCHASE_ORDER'
8456          , p_ae_header_id           => l_ae_header_id
8457          );
8458 
8459    --
8460    -- set rounding class
8461    --
8462    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8463                       'PURCHASE_ORDER';
8464 
8465    --
8466    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8467    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8468    --
8469    -- bulk performance
8470    --
8471    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8472 
8473    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8474       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8475 
8476    -- 4955764
8477    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8478       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8479 
8480    -- 4458381 Public Sector Enh
8481    
8482    --
8483    -- set accounting attributes for the line type
8484    --
8485    l_entered_amt_idx := 17;
8486    l_accted_amt_idx  := 19;
8487    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8488    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
8489    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
8490    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
8491    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
8492    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
8493    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
8494    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
8495    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_22);
8496    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
8497    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
8498    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
8499    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
8500    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
8501    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
8502    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
8503    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
8504    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
8505    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
8506    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
8507    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
8508    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
8509    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
8510    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
8511    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
8512    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
8513    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
8514    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
8515    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
8516    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
8517    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
8518    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
8519    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
8520    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
8521    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
8522    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
8523    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
8524    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
8525    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
8526    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
8527    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
8528    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
8529    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
8530 
8531    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8532    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8533 
8534    ---------------------------------------------------------------------------------------------------------------
8535    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8536    ---------------------------------------------------------------------------------------------------------------
8537    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8538 
8539    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8540    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8541 
8542    IF xla_accounting_cache_pkg.GetValueChar
8543          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8544          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8545    AND l_bflow_method_code = 'PRIOR_ENTRY'
8546 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8547    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8548          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8549        )
8550    THEN
8551          xla_ae_lines_pkg.BflowUpgEntry
8552            (p_business_method_code    => l_bflow_method_code
8553            ,p_business_class_code     => l_bflow_class_code
8554            ,p_balance_type            => l_balance_type_code);
8555    ELSE
8556       NULL;
8557 XLA_AE_LINES_PKG.business_flow_validation(
8558                                 p_business_method_code     => l_bflow_method_code
8559                                ,p_business_class_code      => l_bflow_class_code
8560                                ,p_inherit_description_flag => l_inherit_desc_flag);
8561    END IF;
8562 
8563    --
8564    -- call analytical criteria
8565    --
8566    -- Inherited Analytical Criteria for business flow method of Prior Entry.
8567    --
8568    -- call description
8569    --
8570    -- No description or it is inherited.
8571    --
8572    -- call ADRs
8573    -- Bug 4922099
8574    --
8575    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8576         (NVL(l_actual_upg_option, 'N') = 'O') OR
8577         (NVL(l_enc_upg_option, 'N') = 'O')
8578       )
8579    THEN
8580    NULL;
8581    --
8582    --
8583    
8584    --
8585    --
8586    END IF;
8587    --
8588    -- Bug 4922099
8589    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8590           (NVL(l_enc_upg_option, 'N') = 'O')
8591         ) AND
8592         (l_bflow_method_code = 'PRIOR_ENTRY')
8593       )
8594    THEN
8595       IF
8596       --
8597       1 = 1
8598       --
8599       THEN
8600       xla_accounting_err_pkg.build_message
8601                                     (p_appli_s_name            => 'XLA'
8602                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8603                                     ,p_token_1                 => 'LINE_NUMBER'
8604                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8605                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8606                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8607                                                                              l_component_type
8608                                                                             ,l_component_code
8609                                                                             ,l_component_type_code
8610                                                                             ,l_component_appl_id
8611                                                                             ,l_amb_context_code
8612                                                                             ,l_entity_code
8613                                                                             ,l_event_class_code
8614                                                                            )
8615                                     ,p_token_3                 => 'OWNER'
8616                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8617                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8618                                                                           ,p_lookup_code    => l_component_type_code
8619                                                                          )
8620                                     ,p_token_4                 => 'PRODUCT_NAME'
8621                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8622                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8623                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8624                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8625                                     ,p_ae_header_id            =>  NULL
8626                                        );
8627 
8628         IF (C_LEVEL_ERROR>= g_log_level) THEN
8629                  trace
8630                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8631                       ,p_level    => C_LEVEL_ERROR
8632                       ,p_module   => l_log_module);
8633         END IF;
8634       END IF;
8635    END IF;
8636    --
8637    --
8638    ------------------------------------------------------------------------------------------------
8639    -- 4219869 Business Flow
8640    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8641    -- Prior Entry.  Currently, the following code is always generated.
8642    ------------------------------------------------------------------------------------------------
8643    -- No ValidateCurrentLine for business flow method of Prior Entry
8644 
8645    ------------------------------------------------------------------------------------
8646    -- 4219869 Business Flow
8647    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8648    ------------------------------------------------------------------------------------
8649    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8650 
8651    ----------------------------------------------------------------------------------
8652    -- 4219869 Business Flow
8653    -- Update journal entry status -- Need to generate this within IF <condition>
8654    ----------------------------------------------------------------------------------
8655    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8656          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8657          ,p_balance_type_code => l_balance_type_code
8658          );
8659 
8660    -------------------------------------------------------------------------------------------
8661    -- 4262811 - Generate the Accrual Reversal lines
8662    -------------------------------------------------------------------------------------------
8663    BEGIN
8664       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8665                               (g_array_event(p_event_id).array_value_num('header_index'));
8666       IF l_acc_rev_flag IS NULL THEN
8667          l_acc_rev_flag := 'N';
8668       END IF;
8669    EXCEPTION
8670       WHEN OTHERS THEN
8671          l_acc_rev_flag := 'N';
8672    END;
8673    --
8674    IF (l_acc_rev_flag = 'Y') THEN
8675 
8676        -- 4645092  ------------------------------------------------------------------------------
8677        -- To allow MPA report to determine if it should generate report process
8678        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8679        ------------------------------------------------------------------------------------------
8680 
8681        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8682        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8683    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
8684    -- call ADRs
8685    -- Bug 4922099
8686    --
8687    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8688         (NVL(l_actual_upg_option, 'N') = 'O') OR
8689         (NVL(l_enc_upg_option, 'N') = 'O')
8690       )
8691    THEN
8692    NULL;
8693    --
8694    --
8695    
8696    --
8697    --
8698    END IF;
8699 
8700        --
8701        -- Update the line information that should be overwritten
8702        --
8703        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8704                                          p_header_num   => 1);
8705        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8706 
8707        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8708 
8709        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8710           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8711        END IF;
8712 
8713       --
8714       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8715       --
8716       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8717           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8718       ELSE
8719           ---------------------------------------------------------------------------------------------------
8720           -- 4262811a Switch Sign
8721           ---------------------------------------------------------------------------------------------------
8722           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8723           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8724                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8725           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8726                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8727           -- 5132302
8728           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8729                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8730 
8731       END IF;
8732 
8733       -- 4955764
8734       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8735       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8736 
8737 
8738       XLA_AE_LINES_PKG.ValidateCurrentLine;
8739       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8740 
8741       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8742                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8743                ,p_balance_type_code => l_balance_type_code);
8744 
8745    END IF;
8746 
8747    -----------------------------------------------------------------------------------------
8748    -- 4262811 Multiperiod Accounting
8749    -----------------------------------------------------------------------------------------
8750      -- No MPA option is assigned.
8751 
8752 
8753 END IF;
8754 END IF;
8755 --
8756 
8757 --
8758 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8759    trace
8760       (p_msg      => 'END of AcctLineType_17'
8761       ,p_level    => C_LEVEL_PROCEDURE
8762       ,p_module   => l_log_module);
8763 END IF;
8764 --
8765 EXCEPTION
8766   WHEN xla_exceptions_pkg.application_exception THEN
8767       RAISE;
8768   WHEN OTHERS THEN
8769        xla_exceptions_pkg.raise_message
8770            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_17');
8771 END AcctLineType_17;
8772 --
8773 
8774 ---------------------------------------
8775 --
8776 -- PRIVATE FUNCTION
8777 --         AcctLineType_18
8778 --
8779 ---------------------------------------
8780 PROCEDURE AcctLineType_18 (
8781   p_application_id        IN NUMBER
8782  ,p_event_id              IN NUMBER
8783  ,p_calculate_acctd_flag  IN VARCHAR2
8784  ,p_calculate_g_l_flag    IN VARCHAR2
8785  ,p_actual_flag           IN OUT VARCHAR2
8786  ,p_balance_type_code     OUT VARCHAR2
8787  ,p_gain_or_loss_ref      OUT VARCHAR2
8788  
8789 --Accounting Line Type
8790  , p_source_7            IN NUMBER
8791 --DISTRIBUTION_IDENTIFIER
8792  , p_source_8            IN NUMBER
8793 --Distribution Type
8794  , p_source_9            IN VARCHAR2
8795  , p_source_9_meaning    IN VARCHAR2
8796 --Entered Currency Code
8797  , p_source_11            IN VARCHAR2
8798 --Purchasing Encumbrance Flag
8799  , p_source_16            IN VARCHAR2
8800 --Organization Encumbrance Reversal Indicator
8801  , p_source_17            IN VARCHAR2
8802 --Applied to Application ID
8803  , p_source_19            IN NUMBER
8804 --Applied to Distribution Link Type
8805  , p_source_20            IN VARCHAR2
8806 --Applied to Entity Code
8807  , p_source_21            IN VARCHAR2
8808 --TXN_PO_DISTRIBUTION_ID
8809  , p_source_22            IN NUMBER
8810 --Applied To Purchase Document Identifier
8811  , p_source_23            IN NUMBER
8812 --PO Budget Account
8813  , p_source_24            IN NUMBER
8814 --Encumbrance Reversal Amount Entered
8815  , p_source_25            IN NUMBER
8816 --Transaction Encumbrance Reversal Amount
8817  , p_source_26            IN NUMBER
8818 --Costing Encumbrance Upgrade Option
8819  , p_source_27            IN VARCHAR2
8820 --Purchasing Encumbrance Type Identifier
8821  , p_source_28            IN NUMBER
8822 --Reserved Flag
8823  , p_source_31            IN VARCHAR2
8824 )
8825 IS
8826 
8827 l_component_type              VARCHAR2(80);
8828 l_component_code              VARCHAR2(30);
8829 l_component_type_code         VARCHAR2(1);
8830 l_component_appl_id           INTEGER;
8831 l_amb_context_code            VARCHAR2(30);
8832 l_entity_code                 VARCHAR2(30);
8833 l_event_class_code            VARCHAR2(30);
8834 l_ae_header_id                NUMBER;
8835 l_event_type_code             VARCHAR2(30);
8836 l_line_definition_code        VARCHAR2(30);
8837 l_line_definition_owner_code  VARCHAR2(1);
8838 --
8839 -- adr variables
8840 l_segment                     VARCHAR2(30);
8841 l_ccid                        NUMBER;
8842 l_adr_transaction_coa_id      NUMBER;
8843 l_adr_accounting_coa_id       NUMBER;
8844 l_adr_flexfield_segment_code  VARCHAR2(30);
8845 l_adr_flex_value_set_id       NUMBER;
8846 l_adr_value_type_code         VARCHAR2(30);
8847 l_adr_value_combination_id    NUMBER;
8848 l_adr_value_segment_code      VARCHAR2(30);
8849 
8850 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8851 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8852 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8853 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8854 
8855 -- 4262811 Variables ------------------------------------------------------------------------------------------
8856 l_entered_amt_idx             NUMBER;
8857 l_accted_amt_idx              NUMBER;
8858 l_acc_rev_flag                VARCHAR2(1);
8859 l_accrual_line_num            NUMBER;
8860 l_tmp_amt                     NUMBER;
8861 l_acc_rev_natural_side_code   VARCHAR2(1);
8862 
8863 l_num_entries                 NUMBER;
8864 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8865 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8866 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8867 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8868 l_recog_line_1                NUMBER;
8869 l_recog_line_2                NUMBER;
8870 
8871 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8872 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8873 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8874 
8875 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8876 
8877 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8878 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8879 
8880 ---------------------------------------------------------------------------------------------------------------
8881 
8882 
8883 --
8884 -- bulk performance
8885 --
8886 l_balance_type_code           VARCHAR2(1);
8887 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8888 l_log_module                  VARCHAR2(240);
8889 
8890 --
8891 -- Upgrade strategy
8892 --
8893 l_actual_upg_option           VARCHAR2(1);
8894 l_enc_upg_option           VARCHAR2(1);
8895 
8896 --
8897 BEGIN
8898 --
8899 IF g_log_enabled THEN
8900       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_18';
8901 END IF;
8902 --
8903 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8904 
8905       trace
8906          (p_msg      => 'BEGIN of AcctLineType_18'
8907          ,p_level    => C_LEVEL_PROCEDURE
8908          ,p_module   => l_log_module);
8909 
8910 END IF;
8911 --
8912 l_component_type             := 'AMB_JLT';
8913 l_component_code             := 'RELIEVE_PO_ENC_ON_DTI';
8914 l_component_type_code        := 'S';
8915 l_component_appl_id          :=  707;
8916 l_amb_context_code           := 'DEFAULT';
8917 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
8918 l_event_class_code           := 'PURCHASE_ORDER';
8919 l_event_type_code            := 'LOG_PO_DEL_ADJ';
8920 l_line_definition_owner_code := 'S';
8921 l_line_definition_code       := 'ENC_PO_DEL_INV_LOG_DEL_ADJ';
8922 --
8923 l_balance_type_code          := 'E';
8924 l_segment                     := NULL;
8925 l_ccid                        := NULL;
8926 l_adr_transaction_coa_id      := NULL;
8927 l_adr_accounting_coa_id       := NULL;
8928 l_adr_flexfield_segment_code  := NULL;
8929 l_adr_flex_value_set_id       := NULL;
8930 l_adr_value_type_code         := NULL;
8931 l_adr_value_combination_id    := NULL;
8932 l_adr_value_segment_code      := NULL;
8933 
8934 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
8935 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
8936 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
8937 l_budgetary_control_flag     := 'Y';
8938 
8939 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8940 l_bflow_applied_to_amt       := NULL; -- 5132302
8941 l_entered_amt_idx            := NULL;          -- 4262811
8942 l_accted_amt_idx             := NULL;          -- 4262811
8943 l_acc_rev_flag               := NULL;          -- 4262811
8944 l_accrual_line_num           := NULL;          -- 4262811
8945 l_tmp_amt                    := NULL;          -- 4262811
8946 --
8947  
8948 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8949     l_balance_type_code <> 'B' THEN
8950 IF NVL(p_source_16,'
8951 ') =  'Y' AND 
8952 NVL(p_source_31,'
8953 ') =  'Y' AND 
8954 NVL(p_source_17,'
8955 ') =  'Y' AND 
8956 NVL(
8957 xla_ae_sources_pkg.GetSystemSourceChar(
8958    p_source_code           => 'XLA_EVENT_TYPE_CODE'
8959  , p_source_type_code      => 'Y'
8960  , p_source_application_id =>  602
8961 ),'
8962 ') =  'PO_DEL_INV' AND 
8963 NVL(p_source_7,9E125) =  15
8964  THEN 
8965 
8966    --
8967    XLA_AE_LINES_PKG.SetNewLine;
8968 
8969    p_balance_type_code          := l_balance_type_code;
8970    -- set the flag so later we will know whether the gain loss line needs to be created
8971    
8972    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8973      p_actual_flag :='A';
8974    END IF;
8975 
8976    --
8977    -- bulk performance
8978    --
8979    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8980                                       p_header_num   => 0); -- 4262811
8981    --
8982    -- set accounting line options
8983    --
8984    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8985            p_natural_side_code          => 'C'
8986          , p_gain_or_loss_flag          => 'N'
8987          , p_gl_transfer_mode_code      => 'S'
8988          , p_acct_entry_type_code       => 'E'
8989          , p_switch_side_flag           => 'N'
8990          , p_merge_duplicate_code       => 'N'
8991          );
8992    --
8993    l_acc_rev_natural_side_code := 'D';  -- 4262811
8994    -- 
8995    --
8996    -- set accounting line type info
8997    --
8998    xla_ae_lines_pkg.SetAcctLineType
8999       (p_component_type             => l_component_type
9000       ,p_event_type_code            => l_event_type_code
9001       ,p_line_definition_owner_code => l_line_definition_owner_code
9002       ,p_line_definition_code       => l_line_definition_code
9003       ,p_accounting_line_code       => l_component_code
9004       ,p_accounting_line_type_code  => l_component_type_code
9005       ,p_accounting_line_appl_id    => l_component_appl_id
9006       ,p_amb_context_code           => l_amb_context_code
9007       ,p_entity_code                => l_entity_code
9008       ,p_event_class_code           => l_event_class_code);
9009    --
9010    -- set accounting class
9011    --
9012    xla_ae_lines_pkg.SetAcctClass(
9013            p_accounting_class_code  => 'PURCHASE_ORDER'
9014          , p_ae_header_id           => l_ae_header_id
9015          );
9016 
9017    --
9018    -- set rounding class
9019    --
9020    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9021                       'PURCHASE_ORDER';
9022 
9023    --
9024    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9025    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9026    --
9027    -- bulk performance
9028    --
9029    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9030 
9031    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9032       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9033 
9034    -- 4955764
9035    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9036       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9037 
9038    -- 4458381 Public Sector Enh
9039    
9040    --
9041    -- set accounting attributes for the line type
9042    --
9043    l_entered_amt_idx := 17;
9044    l_accted_amt_idx  := 19;
9045    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9046    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
9047    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
9048    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
9049    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
9050    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
9051    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
9052    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
9053    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_22);
9054    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
9055    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
9056    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
9057    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
9058    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
9059    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
9060    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
9061    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
9062    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
9063    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
9064    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
9065    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
9066    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
9067    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
9068    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
9069    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
9070    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
9071    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
9072    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
9073    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
9074    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
9075    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
9076    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
9077    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
9078    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
9079    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
9080    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
9081    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
9082    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
9083    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
9084    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
9085    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
9086    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
9087    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
9088 
9089    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9090    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9091 
9092    ---------------------------------------------------------------------------------------------------------------
9093    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9094    ---------------------------------------------------------------------------------------------------------------
9095    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9096 
9097    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9098    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9099 
9100    IF xla_accounting_cache_pkg.GetValueChar
9101          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9102          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9103    AND l_bflow_method_code = 'PRIOR_ENTRY'
9104 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9105    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9106          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9107        )
9108    THEN
9109          xla_ae_lines_pkg.BflowUpgEntry
9110            (p_business_method_code    => l_bflow_method_code
9111            ,p_business_class_code     => l_bflow_class_code
9112            ,p_balance_type            => l_balance_type_code);
9113    ELSE
9114       NULL;
9115 XLA_AE_LINES_PKG.business_flow_validation(
9116                                 p_business_method_code     => l_bflow_method_code
9117                                ,p_business_class_code      => l_bflow_class_code
9118                                ,p_inherit_description_flag => l_inherit_desc_flag);
9119    END IF;
9120 
9121    --
9122    -- call analytical criteria
9123    --
9124    -- Inherited Analytical Criteria for business flow method of Prior Entry.
9125    --
9126    -- call description
9127    --
9128    -- No description or it is inherited.
9129    --
9130    -- call ADRs
9131    -- Bug 4922099
9132    --
9133    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9134         (NVL(l_actual_upg_option, 'N') = 'O') OR
9135         (NVL(l_enc_upg_option, 'N') = 'O')
9136       )
9137    THEN
9138    NULL;
9139    --
9140    --
9141    
9142    --
9143    --
9144    END IF;
9145    --
9146    -- Bug 4922099
9147    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9148           (NVL(l_enc_upg_option, 'N') = 'O')
9149         ) AND
9150         (l_bflow_method_code = 'PRIOR_ENTRY')
9151       )
9152    THEN
9153       IF
9154       --
9155       1 = 1
9156       --
9157       THEN
9158       xla_accounting_err_pkg.build_message
9159                                     (p_appli_s_name            => 'XLA'
9160                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9161                                     ,p_token_1                 => 'LINE_NUMBER'
9162                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9163                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9164                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9165                                                                              l_component_type
9166                                                                             ,l_component_code
9167                                                                             ,l_component_type_code
9168                                                                             ,l_component_appl_id
9169                                                                             ,l_amb_context_code
9170                                                                             ,l_entity_code
9171                                                                             ,l_event_class_code
9172                                                                            )
9173                                     ,p_token_3                 => 'OWNER'
9174                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9175                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9176                                                                           ,p_lookup_code    => l_component_type_code
9177                                                                          )
9178                                     ,p_token_4                 => 'PRODUCT_NAME'
9179                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9180                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9181                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9182                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9183                                     ,p_ae_header_id            =>  NULL
9184                                        );
9185 
9186         IF (C_LEVEL_ERROR>= g_log_level) THEN
9187                  trace
9188                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9189                       ,p_level    => C_LEVEL_ERROR
9190                       ,p_module   => l_log_module);
9191         END IF;
9192       END IF;
9193    END IF;
9194    --
9195    --
9196    ------------------------------------------------------------------------------------------------
9197    -- 4219869 Business Flow
9198    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9199    -- Prior Entry.  Currently, the following code is always generated.
9200    ------------------------------------------------------------------------------------------------
9201    -- No ValidateCurrentLine for business flow method of Prior Entry
9202 
9203    ------------------------------------------------------------------------------------
9204    -- 4219869 Business Flow
9205    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9206    ------------------------------------------------------------------------------------
9207    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9208 
9209    ----------------------------------------------------------------------------------
9210    -- 4219869 Business Flow
9211    -- Update journal entry status -- Need to generate this within IF <condition>
9212    ----------------------------------------------------------------------------------
9213    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9214          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9215          ,p_balance_type_code => l_balance_type_code
9216          );
9217 
9218    -------------------------------------------------------------------------------------------
9219    -- 4262811 - Generate the Accrual Reversal lines
9220    -------------------------------------------------------------------------------------------
9221    BEGIN
9222       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9223                               (g_array_event(p_event_id).array_value_num('header_index'));
9224       IF l_acc_rev_flag IS NULL THEN
9225          l_acc_rev_flag := 'N';
9226       END IF;
9227    EXCEPTION
9228       WHEN OTHERS THEN
9229          l_acc_rev_flag := 'N';
9230    END;
9231    --
9232    IF (l_acc_rev_flag = 'Y') THEN
9233 
9234        -- 4645092  ------------------------------------------------------------------------------
9235        -- To allow MPA report to determine if it should generate report process
9236        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9237        ------------------------------------------------------------------------------------------
9238 
9239        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9240        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9241    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9242    -- call ADRs
9243    -- Bug 4922099
9244    --
9245    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9246         (NVL(l_actual_upg_option, 'N') = 'O') OR
9247         (NVL(l_enc_upg_option, 'N') = 'O')
9248       )
9249    THEN
9250    NULL;
9251    --
9252    --
9253    
9254    --
9255    --
9256    END IF;
9257 
9258        --
9259        -- Update the line information that should be overwritten
9260        --
9261        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9262                                          p_header_num   => 1);
9263        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9264 
9265        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9266 
9267        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9268           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9269        END IF;
9270 
9271       --
9272       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9273       --
9274       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9275           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9276       ELSE
9277           ---------------------------------------------------------------------------------------------------
9278           -- 4262811a Switch Sign
9279           ---------------------------------------------------------------------------------------------------
9280           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9281           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9282                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9283           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9284                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9285           -- 5132302
9286           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9287                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9288 
9289       END IF;
9290 
9291       -- 4955764
9292       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9293       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9294 
9295 
9296       XLA_AE_LINES_PKG.ValidateCurrentLine;
9297       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9298 
9299       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9300                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9301                ,p_balance_type_code => l_balance_type_code);
9302 
9303    END IF;
9304 
9305    -----------------------------------------------------------------------------------------
9306    -- 4262811 Multiperiod Accounting
9307    -----------------------------------------------------------------------------------------
9308      -- No MPA option is assigned.
9309 
9310 
9311 END IF;
9312 END IF;
9313 --
9314 
9315 --
9316 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9317    trace
9318       (p_msg      => 'END of AcctLineType_18'
9319       ,p_level    => C_LEVEL_PROCEDURE
9320       ,p_module   => l_log_module);
9321 END IF;
9322 --
9323 EXCEPTION
9324   WHEN xla_exceptions_pkg.application_exception THEN
9325       RAISE;
9326   WHEN OTHERS THEN
9327        xla_exceptions_pkg.raise_message
9328            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_18');
9329 END AcctLineType_18;
9330 --
9331 
9332 ---------------------------------------
9333 --
9334 -- PRIVATE FUNCTION
9335 --         AcctLineType_19
9336 --
9337 ---------------------------------------
9338 PROCEDURE AcctLineType_19 (
9339   p_application_id        IN NUMBER
9340  ,p_event_id              IN NUMBER
9341  ,p_calculate_acctd_flag  IN VARCHAR2
9342  ,p_calculate_g_l_flag    IN VARCHAR2
9343  ,p_actual_flag           IN OUT VARCHAR2
9344  ,p_balance_type_code     OUT VARCHAR2
9345  ,p_gain_or_loss_ref      OUT VARCHAR2
9346  
9347 --Accounting Line Type
9348  , p_source_7            IN NUMBER
9349 --DISTRIBUTION_IDENTIFIER
9350  , p_source_8            IN NUMBER
9351 --Distribution Type
9352  , p_source_9            IN VARCHAR2
9353  , p_source_9_meaning    IN VARCHAR2
9354 --Entered Currency Code
9355  , p_source_11            IN VARCHAR2
9356 --Purchasing Encumbrance Flag
9357  , p_source_16            IN VARCHAR2
9358 --Organization Encumbrance Reversal Indicator
9359  , p_source_17            IN VARCHAR2
9360 --Applied to Application ID
9361  , p_source_19            IN NUMBER
9362 --Applied to Distribution Link Type
9363  , p_source_20            IN VARCHAR2
9364 --Applied to Entity Code
9365  , p_source_21            IN VARCHAR2
9366 --TXN_PO_DISTRIBUTION_ID
9367  , p_source_22            IN NUMBER
9368 --Applied To Purchase Document Identifier
9369  , p_source_23            IN NUMBER
9370 --PO Budget Account
9371  , p_source_24            IN NUMBER
9372 --Encumbrance Reversal Amount Entered
9373  , p_source_25            IN NUMBER
9374 --Transaction Encumbrance Reversal Amount
9375  , p_source_26            IN NUMBER
9376 --Costing Encumbrance Upgrade Option
9377  , p_source_27            IN VARCHAR2
9378 --Purchasing Encumbrance Type Identifier
9379  , p_source_28            IN NUMBER
9380 --Reserved Flag
9381  , p_source_31            IN VARCHAR2
9382 )
9383 IS
9384 
9385 l_component_type              VARCHAR2(80);
9386 l_component_code              VARCHAR2(30);
9387 l_component_type_code         VARCHAR2(1);
9388 l_component_appl_id           INTEGER;
9389 l_amb_context_code            VARCHAR2(30);
9390 l_entity_code                 VARCHAR2(30);
9391 l_event_class_code            VARCHAR2(30);
9392 l_ae_header_id                NUMBER;
9393 l_event_type_code             VARCHAR2(30);
9394 l_line_definition_code        VARCHAR2(30);
9395 l_line_definition_owner_code  VARCHAR2(1);
9396 --
9397 -- adr variables
9398 l_segment                     VARCHAR2(30);
9399 l_ccid                        NUMBER;
9400 l_adr_transaction_coa_id      NUMBER;
9401 l_adr_accounting_coa_id       NUMBER;
9402 l_adr_flexfield_segment_code  VARCHAR2(30);
9403 l_adr_flex_value_set_id       NUMBER;
9404 l_adr_value_type_code         VARCHAR2(30);
9405 l_adr_value_combination_id    NUMBER;
9406 l_adr_value_segment_code      VARCHAR2(30);
9407 
9408 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9409 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9410 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9411 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9412 
9413 -- 4262811 Variables ------------------------------------------------------------------------------------------
9414 l_entered_amt_idx             NUMBER;
9415 l_accted_amt_idx              NUMBER;
9416 l_acc_rev_flag                VARCHAR2(1);
9417 l_accrual_line_num            NUMBER;
9418 l_tmp_amt                     NUMBER;
9419 l_acc_rev_natural_side_code   VARCHAR2(1);
9420 
9421 l_num_entries                 NUMBER;
9422 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9423 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9424 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9425 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9426 l_recog_line_1                NUMBER;
9427 l_recog_line_2                NUMBER;
9428 
9429 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9430 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9431 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9432 
9433 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9434 
9435 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9436 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9437 
9438 ---------------------------------------------------------------------------------------------------------------
9439 
9440 
9441 --
9442 -- bulk performance
9443 --
9444 l_balance_type_code           VARCHAR2(1);
9445 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9446 l_log_module                  VARCHAR2(240);
9447 
9448 --
9449 -- Upgrade strategy
9450 --
9451 l_actual_upg_option           VARCHAR2(1);
9452 l_enc_upg_option           VARCHAR2(1);
9453 
9454 --
9455 BEGIN
9456 --
9457 IF g_log_enabled THEN
9458       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_19';
9459 END IF;
9460 --
9461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9462 
9463       trace
9464          (p_msg      => 'BEGIN of AcctLineType_19'
9465          ,p_level    => C_LEVEL_PROCEDURE
9466          ,p_module   => l_log_module);
9467 
9468 END IF;
9469 --
9470 l_component_type             := 'AMB_JLT';
9471 l_component_code             := 'RELIEVE_PO_ENC_ON_DTI';
9472 l_component_type_code        := 'S';
9473 l_component_appl_id          :=  707;
9474 l_amb_context_code           := 'DEFAULT';
9475 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
9476 l_event_class_code           := 'PURCHASE_ORDER';
9477 l_event_type_code            := 'PO_DEL_INV';
9478 l_line_definition_owner_code := 'S';
9479 l_line_definition_code       := 'ENC_PO_DEL_INV_DEL';
9480 --
9481 l_balance_type_code          := 'E';
9482 l_segment                     := NULL;
9483 l_ccid                        := NULL;
9484 l_adr_transaction_coa_id      := NULL;
9485 l_adr_accounting_coa_id       := NULL;
9486 l_adr_flexfield_segment_code  := NULL;
9487 l_adr_flex_value_set_id       := NULL;
9488 l_adr_value_type_code         := NULL;
9489 l_adr_value_combination_id    := NULL;
9490 l_adr_value_segment_code      := NULL;
9491 
9492 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
9493 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
9494 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
9495 l_budgetary_control_flag     := 'Y';
9496 
9497 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9498 l_bflow_applied_to_amt       := NULL; -- 5132302
9499 l_entered_amt_idx            := NULL;          -- 4262811
9500 l_accted_amt_idx             := NULL;          -- 4262811
9501 l_acc_rev_flag               := NULL;          -- 4262811
9502 l_accrual_line_num           := NULL;          -- 4262811
9503 l_tmp_amt                    := NULL;          -- 4262811
9504 --
9505  
9506 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9507     l_balance_type_code <> 'B' THEN
9508 IF NVL(p_source_16,'
9509 ') =  'Y' AND 
9510 NVL(p_source_31,'
9511 ') =  'Y' AND 
9512 NVL(p_source_17,'
9513 ') =  'Y' AND 
9514 NVL(
9515 xla_ae_sources_pkg.GetSystemSourceChar(
9516    p_source_code           => 'XLA_EVENT_TYPE_CODE'
9517  , p_source_type_code      => 'Y'
9518  , p_source_application_id =>  602
9519 ),'
9520 ') =  'PO_DEL_INV' AND 
9521 NVL(p_source_7,9E125) =  15
9522  THEN 
9523 
9524    --
9525    XLA_AE_LINES_PKG.SetNewLine;
9526 
9527    p_balance_type_code          := l_balance_type_code;
9528    -- set the flag so later we will know whether the gain loss line needs to be created
9529    
9530    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9531      p_actual_flag :='A';
9532    END IF;
9533 
9534    --
9535    -- bulk performance
9536    --
9537    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9538                                       p_header_num   => 0); -- 4262811
9539    --
9540    -- set accounting line options
9541    --
9542    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9543            p_natural_side_code          => 'C'
9544          , p_gain_or_loss_flag          => 'N'
9545          , p_gl_transfer_mode_code      => 'S'
9546          , p_acct_entry_type_code       => 'E'
9547          , p_switch_side_flag           => 'N'
9548          , p_merge_duplicate_code       => 'N'
9549          );
9550    --
9551    l_acc_rev_natural_side_code := 'D';  -- 4262811
9552    -- 
9553    --
9554    -- set accounting line type info
9555    --
9556    xla_ae_lines_pkg.SetAcctLineType
9557       (p_component_type             => l_component_type
9558       ,p_event_type_code            => l_event_type_code
9559       ,p_line_definition_owner_code => l_line_definition_owner_code
9560       ,p_line_definition_code       => l_line_definition_code
9561       ,p_accounting_line_code       => l_component_code
9562       ,p_accounting_line_type_code  => l_component_type_code
9563       ,p_accounting_line_appl_id    => l_component_appl_id
9564       ,p_amb_context_code           => l_amb_context_code
9565       ,p_entity_code                => l_entity_code
9566       ,p_event_class_code           => l_event_class_code);
9567    --
9568    -- set accounting class
9569    --
9570    xla_ae_lines_pkg.SetAcctClass(
9571            p_accounting_class_code  => 'PURCHASE_ORDER'
9572          , p_ae_header_id           => l_ae_header_id
9573          );
9574 
9575    --
9576    -- set rounding class
9577    --
9578    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9579                       'PURCHASE_ORDER';
9580 
9581    --
9582    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9583    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9584    --
9585    -- bulk performance
9586    --
9587    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9588 
9589    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9590       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9591 
9592    -- 4955764
9593    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9594       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9595 
9596    -- 4458381 Public Sector Enh
9597    
9598    --
9599    -- set accounting attributes for the line type
9600    --
9601    l_entered_amt_idx := 17;
9602    l_accted_amt_idx  := 19;
9603    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9604    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
9605    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
9606    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
9607    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
9608    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
9609    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
9610    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
9611    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_22);
9612    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
9613    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
9614    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
9615    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
9616    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
9617    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
9618    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
9619    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
9620    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
9621    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
9622    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
9623    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
9624    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
9625    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
9626    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
9627    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
9628    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
9629    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
9630    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
9631    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
9632    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
9633    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
9634    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
9635    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
9636    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
9637    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
9638    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
9639    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
9640    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
9641    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
9642    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
9643    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
9644    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
9645    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
9646 
9647    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9648    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9649 
9650    ---------------------------------------------------------------------------------------------------------------
9651    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9652    ---------------------------------------------------------------------------------------------------------------
9653    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9654 
9655    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9656    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9657 
9658    IF xla_accounting_cache_pkg.GetValueChar
9659          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9660          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9661    AND l_bflow_method_code = 'PRIOR_ENTRY'
9662 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9663    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9664          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9665        )
9666    THEN
9667          xla_ae_lines_pkg.BflowUpgEntry
9668            (p_business_method_code    => l_bflow_method_code
9669            ,p_business_class_code     => l_bflow_class_code
9670            ,p_balance_type            => l_balance_type_code);
9671    ELSE
9672       NULL;
9673 XLA_AE_LINES_PKG.business_flow_validation(
9674                                 p_business_method_code     => l_bflow_method_code
9675                                ,p_business_class_code      => l_bflow_class_code
9676                                ,p_inherit_description_flag => l_inherit_desc_flag);
9677    END IF;
9678 
9679    --
9680    -- call analytical criteria
9681    --
9682    -- Inherited Analytical Criteria for business flow method of Prior Entry.
9683    --
9684    -- call description
9685    --
9686    -- No description or it is inherited.
9687    --
9688    -- call ADRs
9689    -- Bug 4922099
9690    --
9691    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9692         (NVL(l_actual_upg_option, 'N') = 'O') OR
9693         (NVL(l_enc_upg_option, 'N') = 'O')
9694       )
9695    THEN
9696    NULL;
9697    --
9698    --
9699    
9700    --
9701    --
9702    END IF;
9703    --
9704    -- Bug 4922099
9705    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9706           (NVL(l_enc_upg_option, 'N') = 'O')
9707         ) AND
9708         (l_bflow_method_code = 'PRIOR_ENTRY')
9709       )
9710    THEN
9711       IF
9712       --
9713       1 = 1
9714       --
9715       THEN
9716       xla_accounting_err_pkg.build_message
9717                                     (p_appli_s_name            => 'XLA'
9718                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9719                                     ,p_token_1                 => 'LINE_NUMBER'
9720                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9721                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9722                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9723                                                                              l_component_type
9724                                                                             ,l_component_code
9725                                                                             ,l_component_type_code
9726                                                                             ,l_component_appl_id
9727                                                                             ,l_amb_context_code
9728                                                                             ,l_entity_code
9729                                                                             ,l_event_class_code
9730                                                                            )
9731                                     ,p_token_3                 => 'OWNER'
9732                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9733                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9734                                                                           ,p_lookup_code    => l_component_type_code
9735                                                                          )
9736                                     ,p_token_4                 => 'PRODUCT_NAME'
9737                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9738                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9739                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9740                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9741                                     ,p_ae_header_id            =>  NULL
9742                                        );
9743 
9744         IF (C_LEVEL_ERROR>= g_log_level) THEN
9745                  trace
9746                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9747                       ,p_level    => C_LEVEL_ERROR
9748                       ,p_module   => l_log_module);
9749         END IF;
9750       END IF;
9751    END IF;
9752    --
9753    --
9754    ------------------------------------------------------------------------------------------------
9755    -- 4219869 Business Flow
9756    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9757    -- Prior Entry.  Currently, the following code is always generated.
9758    ------------------------------------------------------------------------------------------------
9759    -- No ValidateCurrentLine for business flow method of Prior Entry
9760 
9761    ------------------------------------------------------------------------------------
9762    -- 4219869 Business Flow
9763    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9764    ------------------------------------------------------------------------------------
9765    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9766 
9767    ----------------------------------------------------------------------------------
9768    -- 4219869 Business Flow
9769    -- Update journal entry status -- Need to generate this within IF <condition>
9770    ----------------------------------------------------------------------------------
9771    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9772          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9773          ,p_balance_type_code => l_balance_type_code
9774          );
9775 
9776    -------------------------------------------------------------------------------------------
9777    -- 4262811 - Generate the Accrual Reversal lines
9778    -------------------------------------------------------------------------------------------
9779    BEGIN
9780       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9781                               (g_array_event(p_event_id).array_value_num('header_index'));
9782       IF l_acc_rev_flag IS NULL THEN
9783          l_acc_rev_flag := 'N';
9784       END IF;
9785    EXCEPTION
9786       WHEN OTHERS THEN
9787          l_acc_rev_flag := 'N';
9788    END;
9789    --
9790    IF (l_acc_rev_flag = 'Y') THEN
9791 
9792        -- 4645092  ------------------------------------------------------------------------------
9793        -- To allow MPA report to determine if it should generate report process
9794        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9795        ------------------------------------------------------------------------------------------
9796 
9797        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9798        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9799    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9800    -- call ADRs
9801    -- Bug 4922099
9802    --
9803    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9804         (NVL(l_actual_upg_option, 'N') = 'O') OR
9805         (NVL(l_enc_upg_option, 'N') = 'O')
9806       )
9807    THEN
9808    NULL;
9809    --
9810    --
9811    
9812    --
9813    --
9814    END IF;
9815 
9816        --
9817        -- Update the line information that should be overwritten
9818        --
9819        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9820                                          p_header_num   => 1);
9821        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9822 
9823        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9824 
9825        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9826           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9827        END IF;
9828 
9829       --
9830       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9831       --
9832       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9833           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9834       ELSE
9835           ---------------------------------------------------------------------------------------------------
9836           -- 4262811a Switch Sign
9837           ---------------------------------------------------------------------------------------------------
9838           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9839           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9840                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9841           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9842                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9843           -- 5132302
9844           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9845                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9846 
9847       END IF;
9848 
9849       -- 4955764
9850       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9851       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9852 
9853 
9854       XLA_AE_LINES_PKG.ValidateCurrentLine;
9855       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9856 
9857       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9858                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9859                ,p_balance_type_code => l_balance_type_code);
9860 
9861    END IF;
9862 
9863    -----------------------------------------------------------------------------------------
9864    -- 4262811 Multiperiod Accounting
9865    -----------------------------------------------------------------------------------------
9866      -- No MPA option is assigned.
9867 
9868 
9869 END IF;
9870 END IF;
9871 --
9872 
9873 --
9874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9875    trace
9876       (p_msg      => 'END of AcctLineType_19'
9877       ,p_level    => C_LEVEL_PROCEDURE
9878       ,p_module   => l_log_module);
9879 END IF;
9880 --
9881 EXCEPTION
9882   WHEN xla_exceptions_pkg.application_exception THEN
9883       RAISE;
9884   WHEN OTHERS THEN
9885        xla_exceptions_pkg.raise_message
9886            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_19');
9887 END AcctLineType_19;
9888 --
9889 
9890 ---------------------------------------
9891 --
9892 -- PRIVATE FUNCTION
9893 --         AcctLineType_20
9894 --
9895 ---------------------------------------
9896 PROCEDURE AcctLineType_20 (
9897   p_application_id        IN NUMBER
9898  ,p_event_id              IN NUMBER
9899  ,p_calculate_acctd_flag  IN VARCHAR2
9900  ,p_calculate_g_l_flag    IN VARCHAR2
9901  ,p_actual_flag           IN OUT VARCHAR2
9902  ,p_balance_type_code     OUT VARCHAR2
9903  ,p_gain_or_loss_ref      OUT VARCHAR2
9904  
9905 --Accounting Line Type
9906  , p_source_7            IN NUMBER
9907 --DISTRIBUTION_IDENTIFIER
9908  , p_source_8            IN NUMBER
9909 --Distribution Type
9910  , p_source_9            IN VARCHAR2
9911  , p_source_9_meaning    IN VARCHAR2
9912 --Entered Currency Code
9913  , p_source_11            IN VARCHAR2
9914 --Purchasing Encumbrance Flag
9915  , p_source_16            IN VARCHAR2
9916 --Organization Encumbrance Reversal Indicator
9917  , p_source_17            IN VARCHAR2
9918 --Applied to Application ID
9919  , p_source_19            IN NUMBER
9920 --Applied to Distribution Link Type
9921  , p_source_20            IN VARCHAR2
9922 --Applied to Entity Code
9923  , p_source_21            IN VARCHAR2
9924 --TXN_PO_DISTRIBUTION_ID
9925  , p_source_22            IN NUMBER
9926 --Applied To Purchase Document Identifier
9927  , p_source_23            IN NUMBER
9928 --PO Budget Account
9929  , p_source_24            IN NUMBER
9930 --Encumbrance Reversal Amount Entered
9931  , p_source_25            IN NUMBER
9932 --Transaction Encumbrance Reversal Amount
9933  , p_source_26            IN NUMBER
9934 --Costing Encumbrance Upgrade Option
9935  , p_source_27            IN VARCHAR2
9936 --Purchasing Encumbrance Type Identifier
9937  , p_source_28            IN NUMBER
9938 --Reserved Flag
9939  , p_source_31            IN VARCHAR2
9940 )
9941 IS
9942 
9943 l_component_type              VARCHAR2(80);
9944 l_component_code              VARCHAR2(30);
9945 l_component_type_code         VARCHAR2(1);
9946 l_component_appl_id           INTEGER;
9947 l_amb_context_code            VARCHAR2(30);
9948 l_entity_code                 VARCHAR2(30);
9949 l_event_class_code            VARCHAR2(30);
9950 l_ae_header_id                NUMBER;
9951 l_event_type_code             VARCHAR2(30);
9952 l_line_definition_code        VARCHAR2(30);
9953 l_line_definition_owner_code  VARCHAR2(1);
9954 --
9955 -- adr variables
9956 l_segment                     VARCHAR2(30);
9957 l_ccid                        NUMBER;
9958 l_adr_transaction_coa_id      NUMBER;
9959 l_adr_accounting_coa_id       NUMBER;
9960 l_adr_flexfield_segment_code  VARCHAR2(30);
9961 l_adr_flex_value_set_id       NUMBER;
9962 l_adr_value_type_code         VARCHAR2(30);
9963 l_adr_value_combination_id    NUMBER;
9964 l_adr_value_segment_code      VARCHAR2(30);
9965 
9966 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9967 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9968 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9969 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9970 
9971 -- 4262811 Variables ------------------------------------------------------------------------------------------
9972 l_entered_amt_idx             NUMBER;
9973 l_accted_amt_idx              NUMBER;
9974 l_acc_rev_flag                VARCHAR2(1);
9975 l_accrual_line_num            NUMBER;
9976 l_tmp_amt                     NUMBER;
9977 l_acc_rev_natural_side_code   VARCHAR2(1);
9978 
9979 l_num_entries                 NUMBER;
9980 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9981 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9982 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9983 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9984 l_recog_line_1                NUMBER;
9985 l_recog_line_2                NUMBER;
9986 
9987 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9988 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9989 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9990 
9991 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9992 
9993 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9994 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9995 
9996 ---------------------------------------------------------------------------------------------------------------
9997 
9998 
9999 --
10000 -- bulk performance
10001 --
10002 l_balance_type_code           VARCHAR2(1);
10003 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10004 l_log_module                  VARCHAR2(240);
10005 
10006 --
10007 -- Upgrade strategy
10008 --
10009 l_actual_upg_option           VARCHAR2(1);
10010 l_enc_upg_option           VARCHAR2(1);
10011 
10012 --
10013 BEGIN
10014 --
10015 IF g_log_enabled THEN
10016       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_20';
10017 END IF;
10018 --
10019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10020 
10021       trace
10022          (p_msg      => 'BEGIN of AcctLineType_20'
10023          ,p_level    => C_LEVEL_PROCEDURE
10024          ,p_module   => l_log_module);
10025 
10026 END IF;
10027 --
10028 l_component_type             := 'AMB_JLT';
10029 l_component_code             := 'RELIEVE_PO_ENC_ON_DTI';
10030 l_component_type_code        := 'S';
10031 l_component_appl_id          :=  707;
10032 l_amb_context_code           := 'DEFAULT';
10033 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
10034 l_event_class_code           := 'PURCHASE_ORDER';
10035 l_event_type_code            := 'RET_RI_INV';
10036 l_line_definition_owner_code := 'S';
10037 l_line_definition_code       := 'ENC_PO_DEL_INV_RET_RI';
10038 --
10039 l_balance_type_code          := 'E';
10040 l_segment                     := NULL;
10041 l_ccid                        := NULL;
10042 l_adr_transaction_coa_id      := NULL;
10043 l_adr_accounting_coa_id       := NULL;
10044 l_adr_flexfield_segment_code  := NULL;
10045 l_adr_flex_value_set_id       := NULL;
10046 l_adr_value_type_code         := NULL;
10047 l_adr_value_combination_id    := NULL;
10048 l_adr_value_segment_code      := NULL;
10049 
10050 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
10051 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
10052 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
10053 l_budgetary_control_flag     := 'Y';
10054 
10055 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10056 l_bflow_applied_to_amt       := NULL; -- 5132302
10057 l_entered_amt_idx            := NULL;          -- 4262811
10058 l_accted_amt_idx             := NULL;          -- 4262811
10059 l_acc_rev_flag               := NULL;          -- 4262811
10060 l_accrual_line_num           := NULL;          -- 4262811
10061 l_tmp_amt                    := NULL;          -- 4262811
10062 --
10063  
10064 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10065     l_balance_type_code <> 'B' THEN
10066 IF NVL(p_source_16,'
10067 ') =  'Y' AND 
10068 NVL(p_source_31,'
10069 ') =  'Y' AND 
10070 NVL(p_source_17,'
10071 ') =  'Y' AND 
10072 NVL(
10073 xla_ae_sources_pkg.GetSystemSourceChar(
10074    p_source_code           => 'XLA_EVENT_TYPE_CODE'
10075  , p_source_type_code      => 'Y'
10076  , p_source_application_id =>  602
10077 ),'
10078 ') =  'PO_DEL_INV' AND 
10079 NVL(p_source_7,9E125) =  15
10080  THEN 
10081 
10082    --
10083    XLA_AE_LINES_PKG.SetNewLine;
10084 
10085    p_balance_type_code          := l_balance_type_code;
10086    -- set the flag so later we will know whether the gain loss line needs to be created
10087    
10088    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10089      p_actual_flag :='A';
10090    END IF;
10091 
10092    --
10093    -- bulk performance
10094    --
10095    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10096                                       p_header_num   => 0); -- 4262811
10097    --
10098    -- set accounting line options
10099    --
10100    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10101            p_natural_side_code          => 'C'
10102          , p_gain_or_loss_flag          => 'N'
10103          , p_gl_transfer_mode_code      => 'S'
10104          , p_acct_entry_type_code       => 'E'
10105          , p_switch_side_flag           => 'N'
10106          , p_merge_duplicate_code       => 'N'
10107          );
10108    --
10109    l_acc_rev_natural_side_code := 'D';  -- 4262811
10110    -- 
10111    --
10112    -- set accounting line type info
10113    --
10114    xla_ae_lines_pkg.SetAcctLineType
10115       (p_component_type             => l_component_type
10116       ,p_event_type_code            => l_event_type_code
10117       ,p_line_definition_owner_code => l_line_definition_owner_code
10118       ,p_line_definition_code       => l_line_definition_code
10119       ,p_accounting_line_code       => l_component_code
10120       ,p_accounting_line_type_code  => l_component_type_code
10121       ,p_accounting_line_appl_id    => l_component_appl_id
10122       ,p_amb_context_code           => l_amb_context_code
10123       ,p_entity_code                => l_entity_code
10124       ,p_event_class_code           => l_event_class_code);
10125    --
10126    -- set accounting class
10127    --
10128    xla_ae_lines_pkg.SetAcctClass(
10129            p_accounting_class_code  => 'PURCHASE_ORDER'
10130          , p_ae_header_id           => l_ae_header_id
10131          );
10132 
10133    --
10134    -- set rounding class
10135    --
10136    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10137                       'PURCHASE_ORDER';
10138 
10139    --
10140    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10141    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10142    --
10143    -- bulk performance
10144    --
10145    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10146 
10147    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10148       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10149 
10150    -- 4955764
10151    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10152       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10153 
10154    -- 4458381 Public Sector Enh
10155    
10156    --
10157    -- set accounting attributes for the line type
10158    --
10159    l_entered_amt_idx := 17;
10160    l_accted_amt_idx  := 19;
10161    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10162    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
10163    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
10164    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
10165    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
10166    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
10167    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
10168    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
10169    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_22);
10170    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
10171    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
10172    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
10173    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
10174    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
10175    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
10176    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
10177    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
10178    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
10179    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
10180    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
10181    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
10182    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
10183    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
10184    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
10185    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
10186    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
10187    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
10188    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
10189    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
10190    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
10191    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
10192    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
10193    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
10194    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
10195    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
10196    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
10197    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
10198    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
10199    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
10200    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
10201    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
10202    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
10203    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
10204 
10205    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10206    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10207 
10208    ---------------------------------------------------------------------------------------------------------------
10209    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10210    ---------------------------------------------------------------------------------------------------------------
10211    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10212 
10213    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10214    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10215 
10216    IF xla_accounting_cache_pkg.GetValueChar
10217          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10218          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10219    AND l_bflow_method_code = 'PRIOR_ENTRY'
10220 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10221    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10222          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10223        )
10224    THEN
10225          xla_ae_lines_pkg.BflowUpgEntry
10226            (p_business_method_code    => l_bflow_method_code
10227            ,p_business_class_code     => l_bflow_class_code
10228            ,p_balance_type            => l_balance_type_code);
10229    ELSE
10230       NULL;
10231 XLA_AE_LINES_PKG.business_flow_validation(
10232                                 p_business_method_code     => l_bflow_method_code
10233                                ,p_business_class_code      => l_bflow_class_code
10234                                ,p_inherit_description_flag => l_inherit_desc_flag);
10235    END IF;
10236 
10237    --
10238    -- call analytical criteria
10239    --
10240    -- Inherited Analytical Criteria for business flow method of Prior Entry.
10241    --
10242    -- call description
10243    --
10244    -- No description or it is inherited.
10245    --
10246    -- call ADRs
10247    -- Bug 4922099
10248    --
10249    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10250         (NVL(l_actual_upg_option, 'N') = 'O') OR
10251         (NVL(l_enc_upg_option, 'N') = 'O')
10252       )
10253    THEN
10254    NULL;
10255    --
10256    --
10257    
10258    --
10259    --
10260    END IF;
10261    --
10262    -- Bug 4922099
10263    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10264           (NVL(l_enc_upg_option, 'N') = 'O')
10265         ) AND
10266         (l_bflow_method_code = 'PRIOR_ENTRY')
10267       )
10268    THEN
10269       IF
10270       --
10271       1 = 1
10272       --
10273       THEN
10274       xla_accounting_err_pkg.build_message
10275                                     (p_appli_s_name            => 'XLA'
10276                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10277                                     ,p_token_1                 => 'LINE_NUMBER'
10278                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10279                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10280                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10281                                                                              l_component_type
10282                                                                             ,l_component_code
10283                                                                             ,l_component_type_code
10284                                                                             ,l_component_appl_id
10285                                                                             ,l_amb_context_code
10286                                                                             ,l_entity_code
10287                                                                             ,l_event_class_code
10288                                                                            )
10289                                     ,p_token_3                 => 'OWNER'
10290                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10291                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10292                                                                           ,p_lookup_code    => l_component_type_code
10293                                                                          )
10294                                     ,p_token_4                 => 'PRODUCT_NAME'
10295                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10296                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10297                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10298                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10299                                     ,p_ae_header_id            =>  NULL
10300                                        );
10301 
10302         IF (C_LEVEL_ERROR>= g_log_level) THEN
10303                  trace
10304                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10305                       ,p_level    => C_LEVEL_ERROR
10306                       ,p_module   => l_log_module);
10307         END IF;
10308       END IF;
10309    END IF;
10310    --
10311    --
10312    ------------------------------------------------------------------------------------------------
10313    -- 4219869 Business Flow
10314    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10315    -- Prior Entry.  Currently, the following code is always generated.
10316    ------------------------------------------------------------------------------------------------
10317    -- No ValidateCurrentLine for business flow method of Prior Entry
10318 
10319    ------------------------------------------------------------------------------------
10320    -- 4219869 Business Flow
10321    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10322    ------------------------------------------------------------------------------------
10323    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10324 
10325    ----------------------------------------------------------------------------------
10326    -- 4219869 Business Flow
10327    -- Update journal entry status -- Need to generate this within IF <condition>
10328    ----------------------------------------------------------------------------------
10329    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10330          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10331          ,p_balance_type_code => l_balance_type_code
10332          );
10333 
10334    -------------------------------------------------------------------------------------------
10335    -- 4262811 - Generate the Accrual Reversal lines
10336    -------------------------------------------------------------------------------------------
10337    BEGIN
10338       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10339                               (g_array_event(p_event_id).array_value_num('header_index'));
10340       IF l_acc_rev_flag IS NULL THEN
10341          l_acc_rev_flag := 'N';
10342       END IF;
10343    EXCEPTION
10344       WHEN OTHERS THEN
10345          l_acc_rev_flag := 'N';
10346    END;
10347    --
10348    IF (l_acc_rev_flag = 'Y') THEN
10349 
10350        -- 4645092  ------------------------------------------------------------------------------
10351        -- To allow MPA report to determine if it should generate report process
10352        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10353        ------------------------------------------------------------------------------------------
10354 
10355        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10356        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10357    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
10358    -- call ADRs
10359    -- Bug 4922099
10360    --
10361    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10362         (NVL(l_actual_upg_option, 'N') = 'O') OR
10363         (NVL(l_enc_upg_option, 'N') = 'O')
10364       )
10365    THEN
10366    NULL;
10367    --
10368    --
10369    
10370    --
10371    --
10372    END IF;
10373 
10374        --
10375        -- Update the line information that should be overwritten
10376        --
10377        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10378                                          p_header_num   => 1);
10379        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10380 
10381        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10382 
10383        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10384           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10385        END IF;
10386 
10387       --
10388       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10389       --
10390       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10391           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10392       ELSE
10393           ---------------------------------------------------------------------------------------------------
10394           -- 4262811a Switch Sign
10395           ---------------------------------------------------------------------------------------------------
10396           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10397           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10398                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10399           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10400                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10401           -- 5132302
10402           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10403                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10404 
10405       END IF;
10406 
10407       -- 4955764
10408       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10409       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10410 
10411 
10412       XLA_AE_LINES_PKG.ValidateCurrentLine;
10413       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10414 
10415       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10416                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10417                ,p_balance_type_code => l_balance_type_code);
10418 
10419    END IF;
10420 
10421    -----------------------------------------------------------------------------------------
10422    -- 4262811 Multiperiod Accounting
10423    -----------------------------------------------------------------------------------------
10424      -- No MPA option is assigned.
10425 
10426 
10427 END IF;
10428 END IF;
10429 --
10430 
10431 --
10432 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10433    trace
10434       (p_msg      => 'END of AcctLineType_20'
10435       ,p_level    => C_LEVEL_PROCEDURE
10436       ,p_module   => l_log_module);
10437 END IF;
10438 --
10439 EXCEPTION
10440   WHEN xla_exceptions_pkg.application_exception THEN
10441       RAISE;
10442   WHEN OTHERS THEN
10443        xla_exceptions_pkg.raise_message
10444            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_20');
10445 END AcctLineType_20;
10446 --
10447 
10448 ---------------------------------------
10449 --
10450 -- PRIVATE FUNCTION
10451 --         AcctLineType_21
10452 --
10453 ---------------------------------------
10454 PROCEDURE AcctLineType_21 (
10455   p_application_id        IN NUMBER
10456  ,p_event_id              IN NUMBER
10457  ,p_calculate_acctd_flag  IN VARCHAR2
10458  ,p_calculate_g_l_flag    IN VARCHAR2
10459  ,p_actual_flag           IN OUT VARCHAR2
10460  ,p_balance_type_code     OUT VARCHAR2
10461  ,p_gain_or_loss_ref      OUT VARCHAR2
10462  
10463 --DISTRIBUTION_IDENTIFIER
10464  , p_source_8            IN NUMBER
10465 --Distribution Type
10466  , p_source_9            IN VARCHAR2
10467  , p_source_9_meaning    IN VARCHAR2
10468 --Entered Currency Code
10469  , p_source_11            IN VARCHAR2
10470 --Purchasing Encumbrance Flag
10471  , p_source_16            IN VARCHAR2
10472 --Applied to Application ID
10473  , p_source_19            IN NUMBER
10474 --Applied to Distribution Link Type
10475  , p_source_20            IN VARCHAR2
10476 --Applied to Entity Code
10477  , p_source_21            IN VARCHAR2
10478 --Applied To Purchase Document Identifier
10479  , p_source_23            IN NUMBER
10480 --PO Budget Account
10481  , p_source_24            IN NUMBER
10482 --Encumbrance Reversal Amount Entered
10483  , p_source_25            IN NUMBER
10484 --Transaction Encumbrance Reversal Amount
10485  , p_source_26            IN NUMBER
10486 --Purchasing Encumbrance Type Identifier
10487  , p_source_28            IN NUMBER
10488 --Receiving Accounting Line Type
10489  , p_source_29            IN VARCHAR2
10490 --PO_DISTRIBUTION_ID
10491  , p_source_30            IN NUMBER
10492 --Costing Period End Accrual Encumbrance Upgrade Option
10493  , p_source_32            IN VARCHAR2
10494 )
10495 IS
10496 
10497 l_component_type              VARCHAR2(80);
10498 l_component_code              VARCHAR2(30);
10499 l_component_type_code         VARCHAR2(1);
10500 l_component_appl_id           INTEGER;
10501 l_amb_context_code            VARCHAR2(30);
10502 l_entity_code                 VARCHAR2(30);
10503 l_event_class_code            VARCHAR2(30);
10504 l_ae_header_id                NUMBER;
10505 l_event_type_code             VARCHAR2(30);
10506 l_line_definition_code        VARCHAR2(30);
10507 l_line_definition_owner_code  VARCHAR2(1);
10508 --
10509 -- adr variables
10510 l_segment                     VARCHAR2(30);
10511 l_ccid                        NUMBER;
10512 l_adr_transaction_coa_id      NUMBER;
10513 l_adr_accounting_coa_id       NUMBER;
10514 l_adr_flexfield_segment_code  VARCHAR2(30);
10515 l_adr_flex_value_set_id       NUMBER;
10516 l_adr_value_type_code         VARCHAR2(30);
10517 l_adr_value_combination_id    NUMBER;
10518 l_adr_value_segment_code      VARCHAR2(30);
10519 
10520 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10521 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10522 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10523 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10524 
10525 -- 4262811 Variables ------------------------------------------------------------------------------------------
10526 l_entered_amt_idx             NUMBER;
10527 l_accted_amt_idx              NUMBER;
10528 l_acc_rev_flag                VARCHAR2(1);
10529 l_accrual_line_num            NUMBER;
10530 l_tmp_amt                     NUMBER;
10531 l_acc_rev_natural_side_code   VARCHAR2(1);
10532 
10533 l_num_entries                 NUMBER;
10534 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10535 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10536 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10537 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10538 l_recog_line_1                NUMBER;
10539 l_recog_line_2                NUMBER;
10540 
10541 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10542 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10543 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10544 
10545 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10546 
10547 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10548 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10549 
10550 ---------------------------------------------------------------------------------------------------------------
10551 
10552 
10553 --
10554 -- bulk performance
10555 --
10556 l_balance_type_code           VARCHAR2(1);
10557 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10558 l_log_module                  VARCHAR2(240);
10559 
10560 --
10561 -- Upgrade strategy
10562 --
10563 l_actual_upg_option           VARCHAR2(1);
10564 l_enc_upg_option           VARCHAR2(1);
10565 
10566 --
10567 BEGIN
10568 --
10569 IF g_log_enabled THEN
10570       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_21';
10571 END IF;
10572 --
10573 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10574 
10575       trace
10576          (p_msg      => 'BEGIN of AcctLineType_21'
10577          ,p_level    => C_LEVEL_PROCEDURE
10578          ,p_module   => l_log_module);
10579 
10580 END IF;
10581 --
10582 l_component_type             := 'AMB_JLT';
10583 l_component_code             := 'RELIEVE_PO_ENC_ON_PEA';
10584 l_component_type_code        := 'S';
10585 l_component_appl_id          :=  707;
10586 l_amb_context_code           := 'DEFAULT';
10587 l_entity_code                := 'RCV_ACCOUNTING_EVENTS';
10588 l_event_class_code           := 'PERIOD_END_ACCRUAL';
10589 l_event_type_code            := 'PERIOD_END_ACCRUAL_ALL';
10590 l_line_definition_owner_code := 'S';
10591 l_line_definition_code       := 'PO_ENCUM_FOR_PERIOD_END_ACCR';
10592 --
10593 l_balance_type_code          := 'E';
10594 l_segment                     := NULL;
10595 l_ccid                        := NULL;
10596 l_adr_transaction_coa_id      := NULL;
10597 l_adr_accounting_coa_id       := NULL;
10598 l_adr_flexfield_segment_code  := NULL;
10599 l_adr_flex_value_set_id       := NULL;
10600 l_adr_value_type_code         := NULL;
10601 l_adr_value_combination_id    := NULL;
10602 l_adr_value_segment_code      := NULL;
10603 
10604 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
10605 l_bflow_class_code           := 'PO_ENCUMBRANCE';    -- 4219869 Business Flow
10606 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
10607 l_budgetary_control_flag     := 'Y';
10608 
10609 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10610 l_bflow_applied_to_amt       := NULL; -- 5132302
10611 l_entered_amt_idx            := NULL;          -- 4262811
10612 l_accted_amt_idx             := NULL;          -- 4262811
10613 l_acc_rev_flag               := NULL;          -- 4262811
10614 l_accrual_line_num           := NULL;          -- 4262811
10615 l_tmp_amt                    := NULL;          -- 4262811
10616 --
10617  
10618 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10619     l_balance_type_code <> 'B' THEN
10620 IF NVL(p_source_16,'
10621 ') =  'Y' AND 
10622 NVL(
10623 xla_ae_sources_pkg.GetSystemSourceChar(
10624    p_source_code           => 'XLA_EVENT_TYPE_CODE'
10625  , p_source_type_code      => 'Y'
10626  , p_source_application_id =>  602
10627 ),'
10628 ') =  'PERIOD_END_ACCRUAL' AND 
10629 NVL(p_source_29,'
10630 ') =  'Charge'
10631  THEN 
10632 
10633    --
10634    XLA_AE_LINES_PKG.SetNewLine;
10635 
10636    p_balance_type_code          := l_balance_type_code;
10637    -- set the flag so later we will know whether the gain loss line needs to be created
10638    
10639    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10640      p_actual_flag :='A';
10641    END IF;
10642 
10643    --
10644    -- bulk performance
10645    --
10646    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10647                                       p_header_num   => 0); -- 4262811
10648    --
10649    -- set accounting line options
10650    --
10651    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10652            p_natural_side_code          => 'D'
10653          , p_gain_or_loss_flag          => 'N'
10654          , p_gl_transfer_mode_code      => 'S'
10655          , p_acct_entry_type_code       => 'E'
10656          , p_switch_side_flag           => 'Y'
10657          , p_merge_duplicate_code       => 'N'
10658          );
10659    --
10660    l_acc_rev_natural_side_code := 'C';  -- 4262811
10661    -- 
10662    --
10663    -- set accounting line type info
10664    --
10665    xla_ae_lines_pkg.SetAcctLineType
10666       (p_component_type             => l_component_type
10667       ,p_event_type_code            => l_event_type_code
10668       ,p_line_definition_owner_code => l_line_definition_owner_code
10669       ,p_line_definition_code       => l_line_definition_code
10670       ,p_accounting_line_code       => l_component_code
10671       ,p_accounting_line_type_code  => l_component_type_code
10672       ,p_accounting_line_appl_id    => l_component_appl_id
10673       ,p_amb_context_code           => l_amb_context_code
10674       ,p_entity_code                => l_entity_code
10675       ,p_event_class_code           => l_event_class_code);
10676    --
10677    -- set accounting class
10678    --
10679    xla_ae_lines_pkg.SetAcctClass(
10680            p_accounting_class_code  => 'PURCHASE_ORDER'
10681          , p_ae_header_id           => l_ae_header_id
10682          );
10683 
10684    --
10685    -- set rounding class
10686    --
10687    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10688                       'PURCHASE_ORDER';
10689 
10690    --
10691    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10692    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10693    --
10694    -- bulk performance
10695    --
10696    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10697 
10698    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10699       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10700 
10701    -- 4955764
10702    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10703       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10704 
10705    -- 4458381 Public Sector Enh
10706    
10707    --
10708    -- set accounting attributes for the line type
10709    --
10710    l_entered_amt_idx := 17;
10711    l_accted_amt_idx  := 19;
10712    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10713    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
10714    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
10715    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
10716    l_rec_acct_attrs.array_char_value(2)  := p_source_20;
10717    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
10718    l_rec_acct_attrs.array_char_value(3)  := p_source_21;
10719    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
10720    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_30);
10721    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
10722    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_23);
10723    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
10724    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
10725    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
10726    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
10727    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
10728    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_24);
10729    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
10730    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
10731    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
10732    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
10733    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
10734    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
10735    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
10736    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_24);
10737    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
10738    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
10739    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
10740    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
10741    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
10742    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
10743    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
10744    l_rec_acct_attrs.array_char_value(16)  := p_source_32;
10745    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
10746    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
10747    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
10748    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
10749    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
10750    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
10751    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
10752    l_rec_acct_attrs.array_num_value(20)  := p_source_28;
10753    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
10754    l_rec_acct_attrs.array_num_value(21)  := p_source_28;
10755 
10756    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10757    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10758 
10759    ---------------------------------------------------------------------------------------------------------------
10760    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10761    ---------------------------------------------------------------------------------------------------------------
10762    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10763 
10764    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10765    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10766 
10767    IF xla_accounting_cache_pkg.GetValueChar
10768          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10769          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10770    AND l_bflow_method_code = 'PRIOR_ENTRY'
10771 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10772    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10773          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10774        )
10775    THEN
10776          xla_ae_lines_pkg.BflowUpgEntry
10777            (p_business_method_code    => l_bflow_method_code
10778            ,p_business_class_code     => l_bflow_class_code
10779            ,p_balance_type            => l_balance_type_code);
10780    ELSE
10781       NULL;
10782 XLA_AE_LINES_PKG.business_flow_validation(
10783                                 p_business_method_code     => l_bflow_method_code
10784                                ,p_business_class_code      => l_bflow_class_code
10785                                ,p_inherit_description_flag => l_inherit_desc_flag);
10786    END IF;
10787 
10788    --
10789    -- call analytical criteria
10790    --
10791    -- Inherited Analytical Criteria for business flow method of Prior Entry.
10792    --
10793    -- call description
10794    --
10795    -- No description or it is inherited.
10796    --
10797    -- call ADRs
10798    -- Bug 4922099
10799    --
10800    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10801         (NVL(l_actual_upg_option, 'N') = 'O') OR
10802         (NVL(l_enc_upg_option, 'N') = 'O')
10803       )
10804    THEN
10805    NULL;
10806    --
10807    --
10808    
10809    --
10810    --
10811    END IF;
10812    --
10813    -- Bug 4922099
10814    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10815           (NVL(l_enc_upg_option, 'N') = 'O')
10816         ) AND
10817         (l_bflow_method_code = 'PRIOR_ENTRY')
10818       )
10819    THEN
10820       IF
10821       --
10822       1 = 1
10823       --
10824       THEN
10825       xla_accounting_err_pkg.build_message
10826                                     (p_appli_s_name            => 'XLA'
10827                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10828                                     ,p_token_1                 => 'LINE_NUMBER'
10829                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10830                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10831                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10832                                                                              l_component_type
10833                                                                             ,l_component_code
10834                                                                             ,l_component_type_code
10835                                                                             ,l_component_appl_id
10836                                                                             ,l_amb_context_code
10837                                                                             ,l_entity_code
10838                                                                             ,l_event_class_code
10839                                                                            )
10840                                     ,p_token_3                 => 'OWNER'
10841                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10842                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10843                                                                           ,p_lookup_code    => l_component_type_code
10844                                                                          )
10845                                     ,p_token_4                 => 'PRODUCT_NAME'
10846                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10847                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10848                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10849                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10850                                     ,p_ae_header_id            =>  NULL
10851                                        );
10852 
10853         IF (C_LEVEL_ERROR>= g_log_level) THEN
10854                  trace
10855                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10856                       ,p_level    => C_LEVEL_ERROR
10857                       ,p_module   => l_log_module);
10858         END IF;
10859       END IF;
10860    END IF;
10861    --
10862    --
10863    ------------------------------------------------------------------------------------------------
10864    -- 4219869 Business Flow
10865    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10866    -- Prior Entry.  Currently, the following code is always generated.
10867    ------------------------------------------------------------------------------------------------
10868    -- No ValidateCurrentLine for business flow method of Prior Entry
10869 
10870    ------------------------------------------------------------------------------------
10871    -- 4219869 Business Flow
10872    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10873    ------------------------------------------------------------------------------------
10874    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10875 
10876    ----------------------------------------------------------------------------------
10877    -- 4219869 Business Flow
10878    -- Update journal entry status -- Need to generate this within IF <condition>
10879    ----------------------------------------------------------------------------------
10880    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10881          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10882          ,p_balance_type_code => l_balance_type_code
10883          );
10884 
10885    -------------------------------------------------------------------------------------------
10886    -- 4262811 - Generate the Accrual Reversal lines
10887    -------------------------------------------------------------------------------------------
10888    BEGIN
10889       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10890                               (g_array_event(p_event_id).array_value_num('header_index'));
10891       IF l_acc_rev_flag IS NULL THEN
10892          l_acc_rev_flag := 'N';
10893       END IF;
10894    EXCEPTION
10895       WHEN OTHERS THEN
10896          l_acc_rev_flag := 'N';
10897    END;
10898    --
10899    IF (l_acc_rev_flag = 'Y') THEN
10900 
10901        -- 4645092  ------------------------------------------------------------------------------
10902        -- To allow MPA report to determine if it should generate report process
10903        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10904        ------------------------------------------------------------------------------------------
10905 
10906        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10907        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10908    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
10909    -- call ADRs
10910    -- Bug 4922099
10911    --
10912    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10913         (NVL(l_actual_upg_option, 'N') = 'O') OR
10914         (NVL(l_enc_upg_option, 'N') = 'O')
10915       )
10916    THEN
10917    NULL;
10918    --
10919    --
10920    
10921    --
10922    --
10923    END IF;
10924 
10925        --
10926        -- Update the line information that should be overwritten
10927        --
10928        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10929                                          p_header_num   => 1);
10930        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10931 
10932        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10933 
10934        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10935           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10936        END IF;
10937 
10938       --
10939       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10940       --
10941       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10942           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10943       ELSE
10944           ---------------------------------------------------------------------------------------------------
10945           -- 4262811a Switch Sign
10946           ---------------------------------------------------------------------------------------------------
10947           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10948           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10949                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10950           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10951                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10952           -- 5132302
10953           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10954                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10955 
10956       END IF;
10957 
10958       -- 4955764
10959       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10960       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10961 
10962 
10963       XLA_AE_LINES_PKG.ValidateCurrentLine;
10964       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10965 
10966       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10967                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10968                ,p_balance_type_code => l_balance_type_code);
10969 
10970    END IF;
10971 
10972    -----------------------------------------------------------------------------------------
10973    -- 4262811 Multiperiod Accounting
10974    -----------------------------------------------------------------------------------------
10975      -- No MPA option is assigned.
10976 
10977 
10978 END IF;
10979 END IF;
10980 --
10981 
10982 --
10983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10984    trace
10985       (p_msg      => 'END of AcctLineType_21'
10986       ,p_level    => C_LEVEL_PROCEDURE
10987       ,p_module   => l_log_module);
10988 END IF;
10989 --
10990 EXCEPTION
10991   WHEN xla_exceptions_pkg.application_exception THEN
10992       RAISE;
10993   WHEN OTHERS THEN
10994        xla_exceptions_pkg.raise_message
10995            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_21');
10996 END AcctLineType_21;
10997 --
10998 
10999 ---------------------------------------
11000 --
11001 -- PRIVATE FUNCTION
11002 --         AcctLineType_22
11003 --
11004 ---------------------------------------
11005 PROCEDURE AcctLineType_22 (
11006   p_application_id        IN NUMBER
11007  ,p_event_id              IN NUMBER
11008  ,p_calculate_acctd_flag  IN VARCHAR2
11009  ,p_calculate_g_l_flag    IN VARCHAR2
11010  ,p_actual_flag           IN OUT VARCHAR2
11011  ,p_balance_type_code     OUT VARCHAR2
11012  ,p_gain_or_loss_ref      OUT VARCHAR2
11013  
11014 --DISTRIBUTION_IDENTIFIER
11015  , p_source_8            IN NUMBER
11016 --Distribution Type
11017  , p_source_9            IN VARCHAR2
11018  , p_source_9_meaning    IN VARCHAR2
11019 --Entered Currency Code
11020  , p_source_11            IN VARCHAR2
11021 --Organization Encumbrance Reversal Indicator
11022  , p_source_17            IN VARCHAR2
11023 --Applied to Application ID
11024  , p_source_19            IN NUMBER
11025 --Encumbrance Reversal Amount Entered
11026  , p_source_25            IN NUMBER
11027 --Transaction Encumbrance Reversal Amount
11028  , p_source_26            IN NUMBER
11029 --Costing Encumbrance Upgrade Option
11030  , p_source_27            IN VARCHAR2
11031 --Requisition Encumbrance Flag
11032  , p_source_33            IN VARCHAR2
11033 --Requisition Reserved Flag
11034  , p_source_34            IN VARCHAR2
11035 --Business Flow Requisition Distribution Type
11036  , p_source_35            IN VARCHAR2
11037 --Business Flow Requisition Entity Code
11038  , p_source_36            IN VARCHAR2
11039 --Business Flow Requisition Distribution Identifier
11040  , p_source_37            IN NUMBER
11041 --Business Flow Requisition Identifier
11042  , p_source_38            IN NUMBER
11043 --Requisition Budget Account
11044  , p_source_39            IN NUMBER
11045 --Requisition Encumbrance Type Identifier
11046  , p_source_40            IN NUMBER
11047 )
11048 IS
11049 
11050 l_component_type              VARCHAR2(80);
11051 l_component_code              VARCHAR2(30);
11052 l_component_type_code         VARCHAR2(1);
11053 l_component_appl_id           INTEGER;
11054 l_amb_context_code            VARCHAR2(30);
11055 l_entity_code                 VARCHAR2(30);
11056 l_event_class_code            VARCHAR2(30);
11057 l_ae_header_id                NUMBER;
11058 l_event_type_code             VARCHAR2(30);
11059 l_line_definition_code        VARCHAR2(30);
11060 l_line_definition_owner_code  VARCHAR2(1);
11061 --
11062 -- adr variables
11063 l_segment                     VARCHAR2(30);
11064 l_ccid                        NUMBER;
11065 l_adr_transaction_coa_id      NUMBER;
11066 l_adr_accounting_coa_id       NUMBER;
11067 l_adr_flexfield_segment_code  VARCHAR2(30);
11068 l_adr_flex_value_set_id       NUMBER;
11069 l_adr_value_type_code         VARCHAR2(30);
11070 l_adr_value_combination_id    NUMBER;
11071 l_adr_value_segment_code      VARCHAR2(30);
11072 
11073 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11074 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11075 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11076 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11077 
11078 -- 4262811 Variables ------------------------------------------------------------------------------------------
11079 l_entered_amt_idx             NUMBER;
11080 l_accted_amt_idx              NUMBER;
11081 l_acc_rev_flag                VARCHAR2(1);
11082 l_accrual_line_num            NUMBER;
11083 l_tmp_amt                     NUMBER;
11084 l_acc_rev_natural_side_code   VARCHAR2(1);
11085 
11086 l_num_entries                 NUMBER;
11087 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11088 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11089 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11090 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11091 l_recog_line_1                NUMBER;
11092 l_recog_line_2                NUMBER;
11093 
11094 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11095 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11096 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11097 
11098 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11099 
11100 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11101 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11102 
11103 ---------------------------------------------------------------------------------------------------------------
11104 
11105 
11106 --
11107 -- bulk performance
11108 --
11109 l_balance_type_code           VARCHAR2(1);
11110 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11111 l_log_module                  VARCHAR2(240);
11112 
11113 --
11114 -- Upgrade strategy
11115 --
11116 l_actual_upg_option           VARCHAR2(1);
11117 l_enc_upg_option           VARCHAR2(1);
11118 
11119 --
11120 BEGIN
11121 --
11122 IF g_log_enabled THEN
11123       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_22';
11124 END IF;
11125 --
11126 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11127 
11128       trace
11129          (p_msg      => 'BEGIN of AcctLineType_22'
11130          ,p_level    => C_LEVEL_PROCEDURE
11131          ,p_module   => l_log_module);
11132 
11133 END IF;
11134 --
11135 l_component_type             := 'AMB_JLT';
11136 l_component_code             := 'RELIEVE_REQ_ENC_ON_DIR';
11137 l_component_type_code        := 'S';
11138 l_component_appl_id          :=  707;
11139 l_amb_context_code           := 'DEFAULT';
11140 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
11141 l_event_class_code           := 'DIR_INTERORG_RCPT';
11142 l_event_type_code            := 'DIR_INTERORG_RCPT_ALL';
11143 l_line_definition_owner_code := 'S';
11144 l_line_definition_code       := 'REQ_ENCUM_ON_DIR';
11145 --
11146 l_balance_type_code          := 'E';
11147 l_segment                     := NULL;
11148 l_ccid                        := NULL;
11149 l_adr_transaction_coa_id      := NULL;
11150 l_adr_accounting_coa_id       := NULL;
11151 l_adr_flexfield_segment_code  := NULL;
11152 l_adr_flex_value_set_id       := NULL;
11153 l_adr_value_type_code         := NULL;
11154 l_adr_value_combination_id    := NULL;
11155 l_adr_value_segment_code      := NULL;
11156 
11157 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
11158 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
11159 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
11160 l_budgetary_control_flag     := 'Y';
11161 
11162 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11163 l_bflow_applied_to_amt       := NULL; -- 5132302
11164 l_entered_amt_idx            := NULL;          -- 4262811
11165 l_accted_amt_idx             := NULL;          -- 4262811
11166 l_acc_rev_flag               := NULL;          -- 4262811
11167 l_accrual_line_num           := NULL;          -- 4262811
11168 l_tmp_amt                    := NULL;          -- 4262811
11169 --
11170  
11171 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11172     l_balance_type_code <> 'B' THEN
11173 IF NVL(p_source_33,'
11174 ') =  'Y' AND 
11175 NVL(p_source_17,'
11176 ') =  'Y' AND 
11177 NVL(p_source_34,'
11178 ') =  'Y'
11179  THEN 
11180 
11181    --
11182    XLA_AE_LINES_PKG.SetNewLine;
11183 
11184    p_balance_type_code          := l_balance_type_code;
11185    -- set the flag so later we will know whether the gain loss line needs to be created
11186    
11187    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11188      p_actual_flag :='A';
11189    END IF;
11190 
11191    --
11192    -- bulk performance
11193    --
11194    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11195                                       p_header_num   => 0); -- 4262811
11196    --
11197    -- set accounting line options
11198    --
11199    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11200            p_natural_side_code          => 'C'
11201          , p_gain_or_loss_flag          => 'N'
11202          , p_gl_transfer_mode_code      => 'S'
11203          , p_acct_entry_type_code       => 'E'
11204          , p_switch_side_flag           => 'N'
11205          , p_merge_duplicate_code       => 'N'
11206          );
11207    --
11208    l_acc_rev_natural_side_code := 'D';  -- 4262811
11209    -- 
11210    --
11211    -- set accounting line type info
11212    --
11213    xla_ae_lines_pkg.SetAcctLineType
11214       (p_component_type             => l_component_type
11215       ,p_event_type_code            => l_event_type_code
11216       ,p_line_definition_owner_code => l_line_definition_owner_code
11217       ,p_line_definition_code       => l_line_definition_code
11218       ,p_accounting_line_code       => l_component_code
11219       ,p_accounting_line_type_code  => l_component_type_code
11220       ,p_accounting_line_appl_id    => l_component_appl_id
11221       ,p_amb_context_code           => l_amb_context_code
11222       ,p_entity_code                => l_entity_code
11223       ,p_event_class_code           => l_event_class_code);
11224    --
11225    -- set accounting class
11226    --
11227    xla_ae_lines_pkg.SetAcctClass(
11228            p_accounting_class_code  => 'REQUISITION'
11229          , p_ae_header_id           => l_ae_header_id
11230          );
11231 
11232    --
11233    -- set rounding class
11234    --
11235    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11236                       'REQUISITION';
11237 
11238    --
11239    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11240    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11241    --
11242    -- bulk performance
11243    --
11244    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11245 
11246    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11247       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11248 
11249    -- 4955764
11250    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11251       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11252 
11253    -- 4458381 Public Sector Enh
11254    
11255    --
11256    -- set accounting attributes for the line type
11257    --
11258    l_entered_amt_idx := 17;
11259    l_accted_amt_idx  := 19;
11260    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11261    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
11262    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
11263    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
11264    l_rec_acct_attrs.array_char_value(2)  := p_source_35;
11265    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
11266    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
11267    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
11268    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_37);
11269    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
11270    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_38);
11271    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
11272    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
11273    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
11274    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
11275    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
11276    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_39);
11277    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
11278    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
11279    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
11280    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
11281    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
11282    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
11283    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
11284    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_39);
11285    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
11286    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
11287    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
11288    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
11289    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
11290    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
11291    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
11292    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
11293    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
11294    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
11295    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
11296    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
11297    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
11298    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
11299    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
11300    l_rec_acct_attrs.array_num_value(20)  := p_source_40;
11301    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
11302    l_rec_acct_attrs.array_num_value(21)  := p_source_40;
11303 
11304    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11305    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11306 
11307    ---------------------------------------------------------------------------------------------------------------
11308    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11309    ---------------------------------------------------------------------------------------------------------------
11310    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11311 
11312    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11313    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11314 
11315    IF xla_accounting_cache_pkg.GetValueChar
11316          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11317          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11318    AND l_bflow_method_code = 'PRIOR_ENTRY'
11319 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11320    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11321          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11322        )
11323    THEN
11324          xla_ae_lines_pkg.BflowUpgEntry
11325            (p_business_method_code    => l_bflow_method_code
11326            ,p_business_class_code     => l_bflow_class_code
11327            ,p_balance_type            => l_balance_type_code);
11328    ELSE
11329       NULL;
11330 XLA_AE_LINES_PKG.business_flow_validation(
11331                                 p_business_method_code     => l_bflow_method_code
11332                                ,p_business_class_code      => l_bflow_class_code
11333                                ,p_inherit_description_flag => l_inherit_desc_flag);
11334    END IF;
11335 
11336    --
11337    -- call analytical criteria
11338    --
11339    -- Inherited Analytical Criteria for business flow method of Prior Entry.
11340    --
11341    -- call description
11342    --
11343    -- No description or it is inherited.
11344    --
11345    -- call ADRs
11346    -- Bug 4922099
11347    --
11348    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11349         (NVL(l_actual_upg_option, 'N') = 'O') OR
11350         (NVL(l_enc_upg_option, 'N') = 'O')
11351       )
11352    THEN
11353    NULL;
11354    --
11355    --
11356    
11357    --
11358    --
11359    END IF;
11360    --
11361    -- Bug 4922099
11362    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11363           (NVL(l_enc_upg_option, 'N') = 'O')
11364         ) AND
11365         (l_bflow_method_code = 'PRIOR_ENTRY')
11366       )
11367    THEN
11368       IF
11369       --
11370       1 = 1
11371       --
11372       THEN
11373       xla_accounting_err_pkg.build_message
11374                                     (p_appli_s_name            => 'XLA'
11375                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11376                                     ,p_token_1                 => 'LINE_NUMBER'
11377                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11378                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11379                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11380                                                                              l_component_type
11381                                                                             ,l_component_code
11382                                                                             ,l_component_type_code
11383                                                                             ,l_component_appl_id
11384                                                                             ,l_amb_context_code
11385                                                                             ,l_entity_code
11386                                                                             ,l_event_class_code
11387                                                                            )
11388                                     ,p_token_3                 => 'OWNER'
11389                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11390                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11391                                                                           ,p_lookup_code    => l_component_type_code
11392                                                                          )
11393                                     ,p_token_4                 => 'PRODUCT_NAME'
11394                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11395                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11396                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11397                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11398                                     ,p_ae_header_id            =>  NULL
11399                                        );
11400 
11401         IF (C_LEVEL_ERROR>= g_log_level) THEN
11402                  trace
11403                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11404                       ,p_level    => C_LEVEL_ERROR
11405                       ,p_module   => l_log_module);
11406         END IF;
11407       END IF;
11408    END IF;
11409    --
11410    --
11411    ------------------------------------------------------------------------------------------------
11412    -- 4219869 Business Flow
11413    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11414    -- Prior Entry.  Currently, the following code is always generated.
11415    ------------------------------------------------------------------------------------------------
11416    -- No ValidateCurrentLine for business flow method of Prior Entry
11417 
11418    ------------------------------------------------------------------------------------
11419    -- 4219869 Business Flow
11420    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11421    ------------------------------------------------------------------------------------
11422    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11423 
11424    ----------------------------------------------------------------------------------
11425    -- 4219869 Business Flow
11426    -- Update journal entry status -- Need to generate this within IF <condition>
11427    ----------------------------------------------------------------------------------
11428    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11429          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11430          ,p_balance_type_code => l_balance_type_code
11431          );
11432 
11433    -------------------------------------------------------------------------------------------
11434    -- 4262811 - Generate the Accrual Reversal lines
11435    -------------------------------------------------------------------------------------------
11436    BEGIN
11437       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11438                               (g_array_event(p_event_id).array_value_num('header_index'));
11439       IF l_acc_rev_flag IS NULL THEN
11440          l_acc_rev_flag := 'N';
11441       END IF;
11442    EXCEPTION
11443       WHEN OTHERS THEN
11444          l_acc_rev_flag := 'N';
11445    END;
11446    --
11447    IF (l_acc_rev_flag = 'Y') THEN
11448 
11449        -- 4645092  ------------------------------------------------------------------------------
11450        -- To allow MPA report to determine if it should generate report process
11451        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11452        ------------------------------------------------------------------------------------------
11453 
11454        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11455        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11456    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
11457    -- call ADRs
11458    -- Bug 4922099
11459    --
11460    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11461         (NVL(l_actual_upg_option, 'N') = 'O') OR
11462         (NVL(l_enc_upg_option, 'N') = 'O')
11463       )
11464    THEN
11465    NULL;
11466    --
11467    --
11468    
11469    --
11470    --
11471    END IF;
11472 
11473        --
11474        -- Update the line information that should be overwritten
11475        --
11476        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11477                                          p_header_num   => 1);
11478        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11479 
11480        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11481 
11482        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11483           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11484        END IF;
11485 
11486       --
11487       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11488       --
11489       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11490           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11491       ELSE
11492           ---------------------------------------------------------------------------------------------------
11493           -- 4262811a Switch Sign
11494           ---------------------------------------------------------------------------------------------------
11495           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11496           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11497                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11498           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11499                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11500           -- 5132302
11501           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11502                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11503 
11504       END IF;
11505 
11506       -- 4955764
11507       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11508       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11509 
11510 
11511       XLA_AE_LINES_PKG.ValidateCurrentLine;
11512       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11513 
11514       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11515                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11516                ,p_balance_type_code => l_balance_type_code);
11517 
11518    END IF;
11519 
11520    -----------------------------------------------------------------------------------------
11521    -- 4262811 Multiperiod Accounting
11522    -----------------------------------------------------------------------------------------
11523      -- No MPA option is assigned.
11524 
11525 
11526 END IF;
11527 END IF;
11528 --
11529 
11530 --
11531 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11532    trace
11533       (p_msg      => 'END of AcctLineType_22'
11534       ,p_level    => C_LEVEL_PROCEDURE
11535       ,p_module   => l_log_module);
11536 END IF;
11537 --
11538 EXCEPTION
11539   WHEN xla_exceptions_pkg.application_exception THEN
11540       RAISE;
11541   WHEN OTHERS THEN
11542        xla_exceptions_pkg.raise_message
11543            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_22');
11544 END AcctLineType_22;
11545 --
11546 
11547 ---------------------------------------
11548 --
11549 -- PRIVATE FUNCTION
11550 --         AcctLineType_23
11551 --
11552 ---------------------------------------
11553 PROCEDURE AcctLineType_23 (
11554   p_application_id        IN NUMBER
11555  ,p_event_id              IN NUMBER
11556  ,p_calculate_acctd_flag  IN VARCHAR2
11557  ,p_calculate_g_l_flag    IN VARCHAR2
11558  ,p_actual_flag           IN OUT VARCHAR2
11559  ,p_balance_type_code     OUT VARCHAR2
11560  ,p_gain_or_loss_ref      OUT VARCHAR2
11561  
11562 --Accounting Line Type
11563  , p_source_7            IN NUMBER
11564 --DISTRIBUTION_IDENTIFIER
11565  , p_source_8            IN NUMBER
11566 --Distribution Type
11567  , p_source_9            IN VARCHAR2
11568  , p_source_9_meaning    IN VARCHAR2
11569 --Entered Currency Code
11570  , p_source_11            IN VARCHAR2
11571 --Organization Encumbrance Reversal Indicator
11572  , p_source_17            IN VARCHAR2
11573 --Applied to Application ID
11574  , p_source_19            IN NUMBER
11575 --Encumbrance Reversal Amount Entered
11576  , p_source_25            IN NUMBER
11577 --Transaction Encumbrance Reversal Amount
11578  , p_source_26            IN NUMBER
11579 --Costing Encumbrance Upgrade Option
11580  , p_source_27            IN VARCHAR2
11581 --Requisition Encumbrance Flag
11582  , p_source_33            IN VARCHAR2
11583 --Requisition Reserved Flag
11584  , p_source_34            IN VARCHAR2
11585 --Business Flow Requisition Distribution Type
11586  , p_source_35            IN VARCHAR2
11587 --Business Flow Requisition Entity Code
11588  , p_source_36            IN VARCHAR2
11589 --Business Flow Requisition Distribution Identifier
11590  , p_source_37            IN NUMBER
11591 --Business Flow Requisition Identifier
11592  , p_source_38            IN NUMBER
11593 --Requisition Budget Account
11594  , p_source_39            IN NUMBER
11595 --Requisition Encumbrance Type Identifier
11596  , p_source_40            IN NUMBER
11597 )
11598 IS
11599 
11600 l_component_type              VARCHAR2(80);
11601 l_component_code              VARCHAR2(30);
11602 l_component_type_code         VARCHAR2(1);
11603 l_component_appl_id           INTEGER;
11604 l_amb_context_code            VARCHAR2(30);
11605 l_entity_code                 VARCHAR2(30);
11606 l_event_class_code            VARCHAR2(30);
11607 l_ae_header_id                NUMBER;
11608 l_event_type_code             VARCHAR2(30);
11609 l_line_definition_code        VARCHAR2(30);
11610 l_line_definition_owner_code  VARCHAR2(1);
11611 --
11612 -- adr variables
11613 l_segment                     VARCHAR2(30);
11614 l_ccid                        NUMBER;
11615 l_adr_transaction_coa_id      NUMBER;
11616 l_adr_accounting_coa_id       NUMBER;
11617 l_adr_flexfield_segment_code  VARCHAR2(30);
11618 l_adr_flex_value_set_id       NUMBER;
11619 l_adr_value_type_code         VARCHAR2(30);
11620 l_adr_value_combination_id    NUMBER;
11621 l_adr_value_segment_code      VARCHAR2(30);
11622 
11623 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11624 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11625 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11626 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11627 
11628 -- 4262811 Variables ------------------------------------------------------------------------------------------
11629 l_entered_amt_idx             NUMBER;
11630 l_accted_amt_idx              NUMBER;
11631 l_acc_rev_flag                VARCHAR2(1);
11632 l_accrual_line_num            NUMBER;
11633 l_tmp_amt                     NUMBER;
11634 l_acc_rev_natural_side_code   VARCHAR2(1);
11635 
11636 l_num_entries                 NUMBER;
11637 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11638 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11639 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11640 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11641 l_recog_line_1                NUMBER;
11642 l_recog_line_2                NUMBER;
11643 
11644 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11645 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11646 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11647 
11648 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11649 
11650 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11651 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11652 
11653 ---------------------------------------------------------------------------------------------------------------
11654 
11655 
11656 --
11657 -- bulk performance
11658 --
11659 l_balance_type_code           VARCHAR2(1);
11660 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11661 l_log_module                  VARCHAR2(240);
11662 
11663 --
11664 -- Upgrade strategy
11665 --
11666 l_actual_upg_option           VARCHAR2(1);
11667 l_enc_upg_option           VARCHAR2(1);
11668 
11669 --
11670 BEGIN
11671 --
11672 IF g_log_enabled THEN
11673       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_23';
11674 END IF;
11675 --
11676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11677 
11678       trace
11679          (p_msg      => 'BEGIN of AcctLineType_23'
11680          ,p_level    => C_LEVEL_PROCEDURE
11681          ,p_module   => l_log_module);
11682 
11683 END IF;
11684 --
11685 l_component_type             := 'AMB_JLT';
11686 l_component_code             := 'RELIEVE_REQ_ENC_ON_REC_IIRFOBR';
11687 l_component_type_code        := 'S';
11688 l_component_appl_id          :=  707;
11689 l_amb_context_code           := 'DEFAULT';
11690 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
11691 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
11692 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_TP';
11693 l_line_definition_owner_code := 'S';
11694 l_line_definition_code       := 'REQ_ENC_ON_IIR_FOB_RCPT_TP';
11695 --
11696 l_balance_type_code          := 'E';
11697 l_segment                     := NULL;
11698 l_ccid                        := NULL;
11699 l_adr_transaction_coa_id      := NULL;
11700 l_adr_accounting_coa_id       := NULL;
11701 l_adr_flexfield_segment_code  := NULL;
11702 l_adr_flex_value_set_id       := NULL;
11703 l_adr_value_type_code         := NULL;
11704 l_adr_value_combination_id    := NULL;
11705 l_adr_value_segment_code      := NULL;
11706 
11707 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
11708 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
11709 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
11710 l_budgetary_control_flag     := 'Y';
11711 
11712 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11713 l_bflow_applied_to_amt       := NULL; -- 5132302
11714 l_entered_amt_idx            := NULL;          -- 4262811
11715 l_accted_amt_idx             := NULL;          -- 4262811
11716 l_acc_rev_flag               := NULL;          -- 4262811
11717 l_accrual_line_num           := NULL;          -- 4262811
11718 l_tmp_amt                    := NULL;          -- 4262811
11719 --
11720  
11721 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11722     l_balance_type_code <> 'B' THEN
11723 IF NVL(p_source_33,'
11724 ') =  'Y' AND 
11725 NVL(p_source_17,'
11726 ') =  'Y' AND 
11727 NVL(p_source_34,'
11728 ') =  'Y' AND 
11729 NVL(p_source_7,9E125) =  15
11730  THEN 
11731 
11732    --
11733    XLA_AE_LINES_PKG.SetNewLine;
11734 
11735    p_balance_type_code          := l_balance_type_code;
11736    -- set the flag so later we will know whether the gain loss line needs to be created
11737    
11738    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11739      p_actual_flag :='A';
11740    END IF;
11741 
11742    --
11743    -- bulk performance
11744    --
11745    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11746                                       p_header_num   => 0); -- 4262811
11747    --
11748    -- set accounting line options
11749    --
11750    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11751            p_natural_side_code          => 'C'
11752          , p_gain_or_loss_flag          => 'N'
11753          , p_gl_transfer_mode_code      => 'S'
11754          , p_acct_entry_type_code       => 'E'
11755          , p_switch_side_flag           => 'N'
11756          , p_merge_duplicate_code       => 'N'
11757          );
11758    --
11759    l_acc_rev_natural_side_code := 'D';  -- 4262811
11760    -- 
11761    --
11762    -- set accounting line type info
11763    --
11764    xla_ae_lines_pkg.SetAcctLineType
11765       (p_component_type             => l_component_type
11766       ,p_event_type_code            => l_event_type_code
11767       ,p_line_definition_owner_code => l_line_definition_owner_code
11768       ,p_line_definition_code       => l_line_definition_code
11769       ,p_accounting_line_code       => l_component_code
11770       ,p_accounting_line_type_code  => l_component_type_code
11771       ,p_accounting_line_appl_id    => l_component_appl_id
11772       ,p_amb_context_code           => l_amb_context_code
11773       ,p_entity_code                => l_entity_code
11774       ,p_event_class_code           => l_event_class_code);
11775    --
11776    -- set accounting class
11777    --
11778    xla_ae_lines_pkg.SetAcctClass(
11779            p_accounting_class_code  => 'REQUISITION'
11780          , p_ae_header_id           => l_ae_header_id
11781          );
11782 
11783    --
11784    -- set rounding class
11785    --
11786    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11787                       'REQUISITION';
11788 
11789    --
11790    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11791    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11792    --
11793    -- bulk performance
11794    --
11795    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11796 
11797    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11798       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11799 
11800    -- 4955764
11801    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11802       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11803 
11804    -- 4458381 Public Sector Enh
11805    
11806    --
11807    -- set accounting attributes for the line type
11808    --
11809    l_entered_amt_idx := 17;
11810    l_accted_amt_idx  := 19;
11811    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11812    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
11813    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
11814    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
11815    l_rec_acct_attrs.array_char_value(2)  := p_source_35;
11816    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
11817    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
11818    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
11819    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_37);
11820    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
11821    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_38);
11822    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
11823    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
11824    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
11825    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
11826    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
11827    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_39);
11828    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
11829    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
11830    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
11831    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
11832    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
11833    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
11834    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
11835    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_39);
11836    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
11837    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
11838    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
11839    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
11840    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
11841    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
11842    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
11843    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
11844    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
11845    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
11846    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
11847    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
11848    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
11849    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
11850    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
11851    l_rec_acct_attrs.array_num_value(20)  := p_source_40;
11852    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
11853    l_rec_acct_attrs.array_num_value(21)  := p_source_40;
11854 
11855    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11856    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11857 
11858    ---------------------------------------------------------------------------------------------------------------
11859    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11860    ---------------------------------------------------------------------------------------------------------------
11861    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11862 
11863    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11864    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11865 
11866    IF xla_accounting_cache_pkg.GetValueChar
11867          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11868          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11869    AND l_bflow_method_code = 'PRIOR_ENTRY'
11870 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11871    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11872          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11873        )
11874    THEN
11875          xla_ae_lines_pkg.BflowUpgEntry
11876            (p_business_method_code    => l_bflow_method_code
11877            ,p_business_class_code     => l_bflow_class_code
11878            ,p_balance_type            => l_balance_type_code);
11879    ELSE
11880       NULL;
11881 XLA_AE_LINES_PKG.business_flow_validation(
11882                                 p_business_method_code     => l_bflow_method_code
11883                                ,p_business_class_code      => l_bflow_class_code
11884                                ,p_inherit_description_flag => l_inherit_desc_flag);
11885    END IF;
11886 
11887    --
11888    -- call analytical criteria
11889    --
11890    -- Inherited Analytical Criteria for business flow method of Prior Entry.
11891    --
11892    -- call description
11893    --
11894    -- No description or it is inherited.
11895    --
11896    -- call ADRs
11897    -- Bug 4922099
11898    --
11899    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11900         (NVL(l_actual_upg_option, 'N') = 'O') OR
11901         (NVL(l_enc_upg_option, 'N') = 'O')
11902       )
11903    THEN
11904    NULL;
11905    --
11906    --
11907    
11908    --
11909    --
11910    END IF;
11911    --
11912    -- Bug 4922099
11913    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11914           (NVL(l_enc_upg_option, 'N') = 'O')
11915         ) AND
11916         (l_bflow_method_code = 'PRIOR_ENTRY')
11917       )
11918    THEN
11919       IF
11920       --
11921       1 = 1
11922       --
11923       THEN
11924       xla_accounting_err_pkg.build_message
11925                                     (p_appli_s_name            => 'XLA'
11926                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11927                                     ,p_token_1                 => 'LINE_NUMBER'
11928                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11929                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11930                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11931                                                                              l_component_type
11932                                                                             ,l_component_code
11933                                                                             ,l_component_type_code
11934                                                                             ,l_component_appl_id
11935                                                                             ,l_amb_context_code
11936                                                                             ,l_entity_code
11937                                                                             ,l_event_class_code
11938                                                                            )
11939                                     ,p_token_3                 => 'OWNER'
11940                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11941                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11942                                                                           ,p_lookup_code    => l_component_type_code
11943                                                                          )
11944                                     ,p_token_4                 => 'PRODUCT_NAME'
11945                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11946                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11947                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11948                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11949                                     ,p_ae_header_id            =>  NULL
11950                                        );
11951 
11952         IF (C_LEVEL_ERROR>= g_log_level) THEN
11953                  trace
11954                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11955                       ,p_level    => C_LEVEL_ERROR
11956                       ,p_module   => l_log_module);
11957         END IF;
11958       END IF;
11959    END IF;
11960    --
11961    --
11962    ------------------------------------------------------------------------------------------------
11963    -- 4219869 Business Flow
11964    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11965    -- Prior Entry.  Currently, the following code is always generated.
11966    ------------------------------------------------------------------------------------------------
11967    -- No ValidateCurrentLine for business flow method of Prior Entry
11968 
11969    ------------------------------------------------------------------------------------
11970    -- 4219869 Business Flow
11971    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11972    ------------------------------------------------------------------------------------
11973    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11974 
11975    ----------------------------------------------------------------------------------
11976    -- 4219869 Business Flow
11977    -- Update journal entry status -- Need to generate this within IF <condition>
11978    ----------------------------------------------------------------------------------
11979    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11980          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11981          ,p_balance_type_code => l_balance_type_code
11982          );
11983 
11984    -------------------------------------------------------------------------------------------
11985    -- 4262811 - Generate the Accrual Reversal lines
11986    -------------------------------------------------------------------------------------------
11987    BEGIN
11988       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11989                               (g_array_event(p_event_id).array_value_num('header_index'));
11990       IF l_acc_rev_flag IS NULL THEN
11991          l_acc_rev_flag := 'N';
11992       END IF;
11993    EXCEPTION
11994       WHEN OTHERS THEN
11995          l_acc_rev_flag := 'N';
11996    END;
11997    --
11998    IF (l_acc_rev_flag = 'Y') THEN
11999 
12000        -- 4645092  ------------------------------------------------------------------------------
12001        -- To allow MPA report to determine if it should generate report process
12002        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12003        ------------------------------------------------------------------------------------------
12004 
12005        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12006        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12007    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12008    -- call ADRs
12009    -- Bug 4922099
12010    --
12011    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12012         (NVL(l_actual_upg_option, 'N') = 'O') OR
12013         (NVL(l_enc_upg_option, 'N') = 'O')
12014       )
12015    THEN
12016    NULL;
12017    --
12018    --
12019    
12020    --
12021    --
12022    END IF;
12023 
12024        --
12025        -- Update the line information that should be overwritten
12026        --
12027        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12028                                          p_header_num   => 1);
12029        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12030 
12031        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12032 
12033        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12034           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12035        END IF;
12036 
12037       --
12038       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12039       --
12040       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12041           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12042       ELSE
12043           ---------------------------------------------------------------------------------------------------
12044           -- 4262811a Switch Sign
12045           ---------------------------------------------------------------------------------------------------
12046           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12047           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12048                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12049           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12050                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12051           -- 5132302
12052           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12053                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12054 
12055       END IF;
12056 
12057       -- 4955764
12058       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12059       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12060 
12061 
12062       XLA_AE_LINES_PKG.ValidateCurrentLine;
12063       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12064 
12065       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12066                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12067                ,p_balance_type_code => l_balance_type_code);
12068 
12069    END IF;
12070 
12071    -----------------------------------------------------------------------------------------
12072    -- 4262811 Multiperiod Accounting
12073    -----------------------------------------------------------------------------------------
12074      -- No MPA option is assigned.
12075 
12076 
12077 END IF;
12078 END IF;
12079 --
12080 
12081 --
12082 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12083    trace
12084       (p_msg      => 'END of AcctLineType_23'
12085       ,p_level    => C_LEVEL_PROCEDURE
12086       ,p_module   => l_log_module);
12087 END IF;
12088 --
12089 EXCEPTION
12090   WHEN xla_exceptions_pkg.application_exception THEN
12091       RAISE;
12092   WHEN OTHERS THEN
12093        xla_exceptions_pkg.raise_message
12094            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_23');
12095 END AcctLineType_23;
12096 --
12097 
12098 ---------------------------------------
12099 --
12100 -- PRIVATE FUNCTION
12101 --         AcctLineType_24
12102 --
12103 ---------------------------------------
12104 PROCEDURE AcctLineType_24 (
12105   p_application_id        IN NUMBER
12106  ,p_event_id              IN NUMBER
12107  ,p_calculate_acctd_flag  IN VARCHAR2
12108  ,p_calculate_g_l_flag    IN VARCHAR2
12109  ,p_actual_flag           IN OUT VARCHAR2
12110  ,p_balance_type_code     OUT VARCHAR2
12111  ,p_gain_or_loss_ref      OUT VARCHAR2
12112  
12113 --Accounting Line Type
12114  , p_source_7            IN NUMBER
12115 --DISTRIBUTION_IDENTIFIER
12116  , p_source_8            IN NUMBER
12117 --Distribution Type
12118  , p_source_9            IN VARCHAR2
12119  , p_source_9_meaning    IN VARCHAR2
12120 --Entered Currency Code
12121  , p_source_11            IN VARCHAR2
12122 --Organization Encumbrance Reversal Indicator
12123  , p_source_17            IN VARCHAR2
12124 --Applied to Application ID
12125  , p_source_19            IN NUMBER
12126 --Encumbrance Reversal Amount Entered
12127  , p_source_25            IN NUMBER
12128 --Transaction Encumbrance Reversal Amount
12129  , p_source_26            IN NUMBER
12130 --Costing Encumbrance Upgrade Option
12131  , p_source_27            IN VARCHAR2
12132 --Requisition Encumbrance Flag
12133  , p_source_33            IN VARCHAR2
12134 --Requisition Reserved Flag
12135  , p_source_34            IN VARCHAR2
12136 --Business Flow Requisition Distribution Type
12137  , p_source_35            IN VARCHAR2
12138 --Business Flow Requisition Entity Code
12139  , p_source_36            IN VARCHAR2
12140 --Business Flow Requisition Distribution Identifier
12141  , p_source_37            IN NUMBER
12142 --Business Flow Requisition Identifier
12143  , p_source_38            IN NUMBER
12144 --Requisition Budget Account
12145  , p_source_39            IN NUMBER
12146 --Requisition Encumbrance Type Identifier
12147  , p_source_40            IN NUMBER
12148 )
12149 IS
12150 
12151 l_component_type              VARCHAR2(80);
12152 l_component_code              VARCHAR2(30);
12153 l_component_type_code         VARCHAR2(1);
12154 l_component_appl_id           INTEGER;
12155 l_amb_context_code            VARCHAR2(30);
12156 l_entity_code                 VARCHAR2(30);
12157 l_event_class_code            VARCHAR2(30);
12158 l_ae_header_id                NUMBER;
12159 l_event_type_code             VARCHAR2(30);
12160 l_line_definition_code        VARCHAR2(30);
12161 l_line_definition_owner_code  VARCHAR2(1);
12162 --
12163 -- adr variables
12164 l_segment                     VARCHAR2(30);
12165 l_ccid                        NUMBER;
12166 l_adr_transaction_coa_id      NUMBER;
12167 l_adr_accounting_coa_id       NUMBER;
12168 l_adr_flexfield_segment_code  VARCHAR2(30);
12169 l_adr_flex_value_set_id       NUMBER;
12170 l_adr_value_type_code         VARCHAR2(30);
12171 l_adr_value_combination_id    NUMBER;
12172 l_adr_value_segment_code      VARCHAR2(30);
12173 
12174 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12175 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12176 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12177 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12178 
12179 -- 4262811 Variables ------------------------------------------------------------------------------------------
12180 l_entered_amt_idx             NUMBER;
12181 l_accted_amt_idx              NUMBER;
12182 l_acc_rev_flag                VARCHAR2(1);
12183 l_accrual_line_num            NUMBER;
12184 l_tmp_amt                     NUMBER;
12185 l_acc_rev_natural_side_code   VARCHAR2(1);
12186 
12187 l_num_entries                 NUMBER;
12188 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12189 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12190 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12191 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12192 l_recog_line_1                NUMBER;
12193 l_recog_line_2                NUMBER;
12194 
12195 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12196 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12197 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12198 
12199 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12200 
12201 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12202 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12203 
12204 ---------------------------------------------------------------------------------------------------------------
12205 
12206 
12207 --
12208 -- bulk performance
12209 --
12210 l_balance_type_code           VARCHAR2(1);
12211 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12212 l_log_module                  VARCHAR2(240);
12213 
12214 --
12215 -- Upgrade strategy
12216 --
12217 l_actual_upg_option           VARCHAR2(1);
12218 l_enc_upg_option           VARCHAR2(1);
12219 
12220 --
12221 BEGIN
12222 --
12223 IF g_log_enabled THEN
12224       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_24';
12225 END IF;
12226 --
12227 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12228 
12229       trace
12230          (p_msg      => 'BEGIN of AcctLineType_24'
12231          ,p_level    => C_LEVEL_PROCEDURE
12232          ,p_module   => l_log_module);
12233 
12234 END IF;
12235 --
12236 l_component_type             := 'AMB_JLT';
12237 l_component_code             := 'RELIEVE_REQ_ENC_ON_REC_IIRFOBR';
12238 l_component_type_code        := 'S';
12239 l_component_appl_id          :=  707;
12240 l_amb_context_code           := 'DEFAULT';
12241 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
12242 l_event_class_code           := 'FOB_RCPT_RECIPIENT_RCPT';
12243 l_event_type_code            := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
12244 l_line_definition_owner_code := 'S';
12245 l_line_definition_code       := 'REQ_ENC_ON_IIR_FOB_RCPT_NTP';
12246 --
12247 l_balance_type_code          := 'E';
12248 l_segment                     := NULL;
12249 l_ccid                        := NULL;
12250 l_adr_transaction_coa_id      := NULL;
12251 l_adr_accounting_coa_id       := NULL;
12252 l_adr_flexfield_segment_code  := NULL;
12253 l_adr_flex_value_set_id       := NULL;
12254 l_adr_value_type_code         := NULL;
12255 l_adr_value_combination_id    := NULL;
12256 l_adr_value_segment_code      := NULL;
12257 
12258 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
12259 l_bflow_class_code           := 'REQ_ENCUMBRANCE';    -- 4219869 Business Flow
12260 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
12261 l_budgetary_control_flag     := 'Y';
12262 
12263 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12264 l_bflow_applied_to_amt       := NULL; -- 5132302
12265 l_entered_amt_idx            := NULL;          -- 4262811
12266 l_accted_amt_idx             := NULL;          -- 4262811
12267 l_acc_rev_flag               := NULL;          -- 4262811
12268 l_accrual_line_num           := NULL;          -- 4262811
12269 l_tmp_amt                    := NULL;          -- 4262811
12270 --
12271  
12272 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12273     l_balance_type_code <> 'B' THEN
12274 IF NVL(p_source_33,'
12275 ') =  'Y' AND 
12276 NVL(p_source_17,'
12277 ') =  'Y' AND 
12278 NVL(p_source_34,'
12279 ') =  'Y' AND 
12280 NVL(p_source_7,9E125) =  15
12281  THEN 
12282 
12283    --
12284    XLA_AE_LINES_PKG.SetNewLine;
12285 
12286    p_balance_type_code          := l_balance_type_code;
12287    -- set the flag so later we will know whether the gain loss line needs to be created
12288    
12289    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12290      p_actual_flag :='A';
12291    END IF;
12292 
12293    --
12294    -- bulk performance
12295    --
12296    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12297                                       p_header_num   => 0); -- 4262811
12298    --
12299    -- set accounting line options
12300    --
12301    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12302            p_natural_side_code          => 'C'
12303          , p_gain_or_loss_flag          => 'N'
12304          , p_gl_transfer_mode_code      => 'S'
12305          , p_acct_entry_type_code       => 'E'
12306          , p_switch_side_flag           => 'N'
12307          , p_merge_duplicate_code       => 'N'
12308          );
12309    --
12310    l_acc_rev_natural_side_code := 'D';  -- 4262811
12311    -- 
12312    --
12313    -- set accounting line type info
12314    --
12315    xla_ae_lines_pkg.SetAcctLineType
12316       (p_component_type             => l_component_type
12317       ,p_event_type_code            => l_event_type_code
12318       ,p_line_definition_owner_code => l_line_definition_owner_code
12319       ,p_line_definition_code       => l_line_definition_code
12320       ,p_accounting_line_code       => l_component_code
12321       ,p_accounting_line_type_code  => l_component_type_code
12322       ,p_accounting_line_appl_id    => l_component_appl_id
12323       ,p_amb_context_code           => l_amb_context_code
12324       ,p_entity_code                => l_entity_code
12325       ,p_event_class_code           => l_event_class_code);
12326    --
12327    -- set accounting class
12328    --
12329    xla_ae_lines_pkg.SetAcctClass(
12330            p_accounting_class_code  => 'REQUISITION'
12331          , p_ae_header_id           => l_ae_header_id
12332          );
12333 
12334    --
12335    -- set rounding class
12336    --
12337    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12338                       'REQUISITION';
12339 
12340    --
12341    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12342    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12343    --
12344    -- bulk performance
12345    --
12346    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12347 
12348    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12349       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12350 
12351    -- 4955764
12352    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12353       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12354 
12355    -- 4458381 Public Sector Enh
12356    
12357    --
12358    -- set accounting attributes for the line type
12359    --
12360    l_entered_amt_idx := 17;
12361    l_accted_amt_idx  := 19;
12362    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12363    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
12364    l_rec_acct_attrs.array_num_value(1)  := p_source_19;
12365    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
12366    l_rec_acct_attrs.array_char_value(2)  := p_source_35;
12367    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
12368    l_rec_acct_attrs.array_char_value(3)  := p_source_36;
12369    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
12370    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_37);
12371    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
12372    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_38);
12373    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
12374    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_8);
12375    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
12376    l_rec_acct_attrs.array_char_value(7)  := p_source_9;
12377    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_CR_CCID';
12378    l_rec_acct_attrs.array_num_value(8)  := TO_NUMBER(p_source_39);
12379    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_CR_ENTERED_AMT';
12380    l_rec_acct_attrs.array_num_value(9)  := p_source_25;
12381    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_CR_ENTERED_CURR';
12382    l_rec_acct_attrs.array_char_value(10)  := p_source_11;
12383    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENC_UPG_CR_LEDGER_AMT';
12384    l_rec_acct_attrs.array_num_value(11)  := p_source_26;
12385    l_rec_acct_attrs.array_acct_attr_code(12) := 'ENC_UPG_DR_CCID';
12386    l_rec_acct_attrs.array_num_value(12)  := TO_NUMBER(p_source_39);
12387    l_rec_acct_attrs.array_acct_attr_code(13) := 'ENC_UPG_DR_ENTERED_AMT';
12388    l_rec_acct_attrs.array_num_value(13)  := p_source_25;
12389    l_rec_acct_attrs.array_acct_attr_code(14) := 'ENC_UPG_DR_ENTERED_CURR';
12390    l_rec_acct_attrs.array_char_value(14)  := p_source_11;
12391    l_rec_acct_attrs.array_acct_attr_code(15) := 'ENC_UPG_DR_LEDGER_AMT';
12392    l_rec_acct_attrs.array_num_value(15)  := p_source_26;
12393    l_rec_acct_attrs.array_acct_attr_code(16) := 'ENC_UPG_OPTION';
12394    l_rec_acct_attrs.array_char_value(16)  := p_source_27;
12395    l_rec_acct_attrs.array_acct_attr_code(17) := 'ENTERED_CURRENCY_AMOUNT';
12396    l_rec_acct_attrs.array_num_value(17)  := p_source_25;
12397    l_rec_acct_attrs.array_acct_attr_code(18) := 'ENTERED_CURRENCY_CODE';
12398    l_rec_acct_attrs.array_char_value(18)  := p_source_11;
12399    l_rec_acct_attrs.array_acct_attr_code(19) := 'LEDGER_AMOUNT';
12400    l_rec_acct_attrs.array_num_value(19)  := p_source_26;
12401    l_rec_acct_attrs.array_acct_attr_code(20) := 'UPG_CR_ENC_TYPE_ID';
12402    l_rec_acct_attrs.array_num_value(20)  := p_source_40;
12403    l_rec_acct_attrs.array_acct_attr_code(21) := 'UPG_DR_ENC_TYPE_ID';
12404    l_rec_acct_attrs.array_num_value(21)  := p_source_40;
12405 
12406    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12407    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12408 
12409    ---------------------------------------------------------------------------------------------------------------
12410    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12411    ---------------------------------------------------------------------------------------------------------------
12412    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12413 
12414    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12415    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12416 
12417    IF xla_accounting_cache_pkg.GetValueChar
12418          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12419          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12420    AND l_bflow_method_code = 'PRIOR_ENTRY'
12421 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12422    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12423          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12424        )
12425    THEN
12426          xla_ae_lines_pkg.BflowUpgEntry
12427            (p_business_method_code    => l_bflow_method_code
12428            ,p_business_class_code     => l_bflow_class_code
12429            ,p_balance_type            => l_balance_type_code);
12430    ELSE
12431       NULL;
12432 XLA_AE_LINES_PKG.business_flow_validation(
12433                                 p_business_method_code     => l_bflow_method_code
12434                                ,p_business_class_code      => l_bflow_class_code
12435                                ,p_inherit_description_flag => l_inherit_desc_flag);
12436    END IF;
12437 
12438    --
12439    -- call analytical criteria
12440    --
12441    -- Inherited Analytical Criteria for business flow method of Prior Entry.
12442    --
12443    -- call description
12444    --
12445    -- No description or it is inherited.
12446    --
12447    -- call ADRs
12448    -- Bug 4922099
12449    --
12450    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12451         (NVL(l_actual_upg_option, 'N') = 'O') OR
12452         (NVL(l_enc_upg_option, 'N') = 'O')
12453       )
12454    THEN
12455    NULL;
12456    --
12457    --
12458    
12459    --
12460    --
12461    END IF;
12462    --
12463    -- Bug 4922099
12464    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12465           (NVL(l_enc_upg_option, 'N') = 'O')
12466         ) AND
12467         (l_bflow_method_code = 'PRIOR_ENTRY')
12468       )
12469    THEN
12470       IF
12471       --
12472       1 = 1
12473       --
12474       THEN
12475       xla_accounting_err_pkg.build_message
12476                                     (p_appli_s_name            => 'XLA'
12477                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12478                                     ,p_token_1                 => 'LINE_NUMBER'
12479                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12480                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12481                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12482                                                                              l_component_type
12483                                                                             ,l_component_code
12484                                                                             ,l_component_type_code
12485                                                                             ,l_component_appl_id
12486                                                                             ,l_amb_context_code
12487                                                                             ,l_entity_code
12488                                                                             ,l_event_class_code
12489                                                                            )
12490                                     ,p_token_3                 => 'OWNER'
12491                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12492                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12493                                                                           ,p_lookup_code    => l_component_type_code
12494                                                                          )
12495                                     ,p_token_4                 => 'PRODUCT_NAME'
12496                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12497                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12498                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12499                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12500                                     ,p_ae_header_id            =>  NULL
12501                                        );
12502 
12503         IF (C_LEVEL_ERROR>= g_log_level) THEN
12504                  trace
12505                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12506                       ,p_level    => C_LEVEL_ERROR
12507                       ,p_module   => l_log_module);
12508         END IF;
12509       END IF;
12510    END IF;
12511    --
12512    --
12513    ------------------------------------------------------------------------------------------------
12514    -- 4219869 Business Flow
12515    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12516    -- Prior Entry.  Currently, the following code is always generated.
12517    ------------------------------------------------------------------------------------------------
12518    -- No ValidateCurrentLine for business flow method of Prior Entry
12519 
12520    ------------------------------------------------------------------------------------
12521    -- 4219869 Business Flow
12522    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12523    ------------------------------------------------------------------------------------
12524    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12525 
12526    ----------------------------------------------------------------------------------
12527    -- 4219869 Business Flow
12528    -- Update journal entry status -- Need to generate this within IF <condition>
12529    ----------------------------------------------------------------------------------
12530    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12531          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12532          ,p_balance_type_code => l_balance_type_code
12533          );
12534 
12535    -------------------------------------------------------------------------------------------
12536    -- 4262811 - Generate the Accrual Reversal lines
12537    -------------------------------------------------------------------------------------------
12538    BEGIN
12539       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12540                               (g_array_event(p_event_id).array_value_num('header_index'));
12541       IF l_acc_rev_flag IS NULL THEN
12542          l_acc_rev_flag := 'N';
12543       END IF;
12544    EXCEPTION
12545       WHEN OTHERS THEN
12546          l_acc_rev_flag := 'N';
12547    END;
12548    --
12549    IF (l_acc_rev_flag = 'Y') THEN
12550 
12551        -- 4645092  ------------------------------------------------------------------------------
12552        -- To allow MPA report to determine if it should generate report process
12553        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12554        ------------------------------------------------------------------------------------------
12555 
12556        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12557        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12558    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12559    -- call ADRs
12560    -- Bug 4922099
12561    --
12562    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12563         (NVL(l_actual_upg_option, 'N') = 'O') OR
12564         (NVL(l_enc_upg_option, 'N') = 'O')
12565       )
12566    THEN
12567    NULL;
12568    --
12569    --
12570    
12571    --
12572    --
12573    END IF;
12574 
12575        --
12576        -- Update the line information that should be overwritten
12577        --
12578        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12579                                          p_header_num   => 1);
12580        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12581 
12582        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12583 
12584        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12585           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12586        END IF;
12587 
12588       --
12589       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12590       --
12591       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12592           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12593       ELSE
12594           ---------------------------------------------------------------------------------------------------
12595           -- 4262811a Switch Sign
12596           ---------------------------------------------------------------------------------------------------
12597           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12598           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12599                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12600           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12601                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12602           -- 5132302
12603           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12604                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12605 
12606       END IF;
12607 
12608       -- 4955764
12609       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12610       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12611 
12612 
12613       XLA_AE_LINES_PKG.ValidateCurrentLine;
12614       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12615 
12616       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12617                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12618                ,p_balance_type_code => l_balance_type_code);
12619 
12620    END IF;
12621 
12622    -----------------------------------------------------------------------------------------
12623    -- 4262811 Multiperiod Accounting
12624    -----------------------------------------------------------------------------------------
12625      -- No MPA option is assigned.
12626 
12627 
12628 END IF;
12629 END IF;
12630 --
12631 
12632 --
12633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12634    trace
12635       (p_msg      => 'END of AcctLineType_24'
12636       ,p_level    => C_LEVEL_PROCEDURE
12637       ,p_module   => l_log_module);
12638 END IF;
12639 --
12640 EXCEPTION
12641   WHEN xla_exceptions_pkg.application_exception THEN
12642       RAISE;
12643   WHEN OTHERS THEN
12644        xla_exceptions_pkg.raise_message
12645            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_24');
12646 END AcctLineType_24;
12647 --
12648 
12649 ---------------------------------------
12650 --
12651 -- PRIVATE FUNCTION
12652 --         AcctLineType_25
12653 --
12654 ---------------------------------------
12655 PROCEDURE AcctLineType_25 (
12656   p_application_id        IN NUMBER
12657  ,p_event_id              IN NUMBER
12658  ,p_calculate_acctd_flag  IN VARCHAR2
12659  ,p_calculate_g_l_flag    IN VARCHAR2
12660  ,p_actual_flag           IN OUT VARCHAR2
12661  ,p_balance_type_code     OUT VARCHAR2
12662  ,p_gain_or_loss_ref      OUT VARCHAR2
12663  
12664 --Cost Management Default Account
12665  , p_source_6            IN NUMBER
12666 --Accounting Line Type
12667  , p_source_7            IN NUMBER
12668 --DISTRIBUTION_IDENTIFIER
12669  , p_source_8            IN NUMBER
12670 --Distribution Type
12671  , p_source_9            IN VARCHAR2
12672  , p_source_9_meaning    IN VARCHAR2
12673 --Entered Amount
12674  , p_source_10            IN NUMBER
12675 --Entered Currency Code
12676  , p_source_11            IN VARCHAR2
12677 --Currency Conversion Date
12678  , p_source_12            IN DATE
12679 --Currency Conversion Rate
12680  , p_source_13            IN NUMBER
12681 --Currency Conversion Type
12682  , p_source_14            IN VARCHAR2
12683 --Accounted Amount
12684  , p_source_15            IN NUMBER
12685 )
12686 IS
12687 
12688 l_component_type              VARCHAR2(80);
12689 l_component_code              VARCHAR2(30);
12690 l_component_type_code         VARCHAR2(1);
12691 l_component_appl_id           INTEGER;
12692 l_amb_context_code            VARCHAR2(30);
12693 l_entity_code                 VARCHAR2(30);
12694 l_event_class_code            VARCHAR2(30);
12695 l_ae_header_id                NUMBER;
12696 l_event_type_code             VARCHAR2(30);
12697 l_line_definition_code        VARCHAR2(30);
12698 l_line_definition_owner_code  VARCHAR2(1);
12699 --
12700 -- adr variables
12701 l_segment                     VARCHAR2(30);
12702 l_ccid                        NUMBER;
12703 l_adr_transaction_coa_id      NUMBER;
12704 l_adr_accounting_coa_id       NUMBER;
12705 l_adr_flexfield_segment_code  VARCHAR2(30);
12706 l_adr_flex_value_set_id       NUMBER;
12707 l_adr_value_type_code         VARCHAR2(30);
12708 l_adr_value_combination_id    NUMBER;
12709 l_adr_value_segment_code      VARCHAR2(30);
12710 
12711 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12712 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12713 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12714 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12715 
12716 -- 4262811 Variables ------------------------------------------------------------------------------------------
12717 l_entered_amt_idx             NUMBER;
12718 l_accted_amt_idx              NUMBER;
12719 l_acc_rev_flag                VARCHAR2(1);
12720 l_accrual_line_num            NUMBER;
12721 l_tmp_amt                     NUMBER;
12722 l_acc_rev_natural_side_code   VARCHAR2(1);
12723 
12724 l_num_entries                 NUMBER;
12725 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12726 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12727 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12728 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12729 l_recog_line_1                NUMBER;
12730 l_recog_line_2                NUMBER;
12731 
12732 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12733 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12734 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12735 
12736 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12737 
12738 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12739 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12740 
12741 ---------------------------------------------------------------------------------------------------------------
12742 
12743 
12744 --
12745 -- bulk performance
12746 --
12747 l_balance_type_code           VARCHAR2(1);
12748 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12749 l_log_module                  VARCHAR2(240);
12750 
12751 --
12752 -- Upgrade strategy
12753 --
12754 l_actual_upg_option           VARCHAR2(1);
12755 l_enc_upg_option           VARCHAR2(1);
12756 
12757 --
12758 BEGIN
12759 --
12760 IF g_log_enabled THEN
12761       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_25';
12762 END IF;
12763 --
12764 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12765 
12766       trace
12767          (p_msg      => 'BEGIN of AcctLineType_25'
12768          ,p_level    => C_LEVEL_PROCEDURE
12769          ,p_module   => l_log_module);
12770 
12771 END IF;
12772 --
12773 l_component_type             := 'AMB_JLT';
12774 l_component_code             := 'RELIEVE_REQ_ENC_ON_REC_IIRFOBS';
12775 l_component_type_code        := 'S';
12776 l_component_appl_id          :=  707;
12777 l_amb_context_code           := 'DEFAULT';
12778 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
12779 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
12780 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_TP';
12781 l_line_definition_owner_code := 'S';
12782 l_line_definition_code       := 'REQ_ENC_ON_IIS_FOB_SHIP_TP';
12783 --
12784 l_balance_type_code          := 'E';
12785 l_segment                     := NULL;
12786 l_ccid                        := NULL;
12787 l_adr_transaction_coa_id      := NULL;
12788 l_adr_accounting_coa_id       := NULL;
12789 l_adr_flexfield_segment_code  := NULL;
12790 l_adr_flex_value_set_id       := NULL;
12791 l_adr_value_type_code         := NULL;
12792 l_adr_value_combination_id    := NULL;
12793 l_adr_value_segment_code      := NULL;
12794 
12795 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12796 l_bflow_class_code           := '';    -- 4219869 Business Flow
12797 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12798 l_budgetary_control_flag     := 'Y';
12799 
12800 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12801 l_bflow_applied_to_amt       := NULL; -- 5132302
12802 l_entered_amt_idx            := NULL;          -- 4262811
12803 l_accted_amt_idx             := NULL;          -- 4262811
12804 l_acc_rev_flag               := NULL;          -- 4262811
12805 l_accrual_line_num           := NULL;          -- 4262811
12806 l_tmp_amt                    := NULL;          -- 4262811
12807 --
12808  
12809 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12810     l_balance_type_code <> 'B' THEN
12811 IF NVL(p_source_7,9E125) =  15
12812  THEN 
12813 
12814    --
12815    XLA_AE_LINES_PKG.SetNewLine;
12816 
12817    p_balance_type_code          := l_balance_type_code;
12818    -- set the flag so later we will know whether the gain loss line needs to be created
12819    
12820    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12821      p_actual_flag :='A';
12822    END IF;
12823 
12824    --
12825    -- bulk performance
12826    --
12827    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12828                                       p_header_num   => 0); -- 4262811
12829    --
12830    -- set accounting line options
12831    --
12832    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12833            p_natural_side_code          => 'D'
12834          , p_gain_or_loss_flag          => 'N'
12835          , p_gl_transfer_mode_code      => 'S'
12836          , p_acct_entry_type_code       => 'E'
12837          , p_switch_side_flag           => 'Y'
12838          , p_merge_duplicate_code       => 'N'
12839          );
12840    --
12841    l_acc_rev_natural_side_code := 'C';  -- 4262811
12842    -- 
12843    --
12844    -- set accounting line type info
12845    --
12846    xla_ae_lines_pkg.SetAcctLineType
12847       (p_component_type             => l_component_type
12848       ,p_event_type_code            => l_event_type_code
12849       ,p_line_definition_owner_code => l_line_definition_owner_code
12850       ,p_line_definition_code       => l_line_definition_code
12851       ,p_accounting_line_code       => l_component_code
12852       ,p_accounting_line_type_code  => l_component_type_code
12853       ,p_accounting_line_appl_id    => l_component_appl_id
12854       ,p_amb_context_code           => l_amb_context_code
12855       ,p_entity_code                => l_entity_code
12856       ,p_event_class_code           => l_event_class_code);
12857    --
12858    -- set accounting class
12859    --
12860    xla_ae_lines_pkg.SetAcctClass(
12861            p_accounting_class_code  => 'REQUISITION'
12862          , p_ae_header_id           => l_ae_header_id
12863          );
12864 
12865    --
12866    -- set rounding class
12867    --
12868    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12869                       'REQUISITION';
12870 
12871    --
12872    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12873    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12874    --
12875    -- bulk performance
12876    --
12877    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12878 
12879    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12880       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12881 
12882    -- 4955764
12883    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12884       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12885 
12886    -- 4458381 Public Sector Enh
12887       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
12888    --
12889    -- set accounting attributes for the line type
12890    --
12891    l_entered_amt_idx := 3;
12892    l_accted_amt_idx  := 8;
12893    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12894    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12895    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_8);
12896    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12897    l_rec_acct_attrs.array_char_value(2)  := p_source_9;
12898    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12899    l_rec_acct_attrs.array_num_value(3)  := p_source_10;
12900    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12901    l_rec_acct_attrs.array_char_value(4)  := p_source_11;
12902    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12903    l_rec_acct_attrs.array_date_value(5)  := p_source_12;
12904    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12905    l_rec_acct_attrs.array_num_value(6)  := p_source_13;
12906    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12907    l_rec_acct_attrs.array_char_value(7)  := p_source_14;
12908    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
12909    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
12910 
12911    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12912    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12913 
12914    ---------------------------------------------------------------------------------------------------------------
12915    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12916    ---------------------------------------------------------------------------------------------------------------
12917    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12918 
12919    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12920    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12921 
12922    IF xla_accounting_cache_pkg.GetValueChar
12923          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12924          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12925    AND l_bflow_method_code = 'PRIOR_ENTRY'
12926 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12927    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12928          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12929        )
12930    THEN
12931          xla_ae_lines_pkg.BflowUpgEntry
12932            (p_business_method_code    => l_bflow_method_code
12933            ,p_business_class_code     => l_bflow_class_code
12934            ,p_balance_type            => l_balance_type_code);
12935    ELSE
12936       NULL;
12937 -- No business flow processing for business flow method of NONE.
12938    END IF;
12939 
12940    --
12941    -- call analytical criteria
12942    --
12943    
12944    --
12945    -- call description
12946    --
12947    -- No description or it is inherited.
12948    --
12949    -- call ADRs
12950    -- Bug 4922099
12951    --
12952    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12953         (NVL(l_actual_upg_option, 'N') = 'O') OR
12954         (NVL(l_enc_upg_option, 'N') = 'O')
12955       )
12956    THEN
12957    NULL;
12958    --
12959    --
12960    
12961   l_ccid := AcctDerRule_2(
12962            p_application_id           => p_application_id
12963          , p_ae_header_id             => l_ae_header_id 
12964 , p_source_6 => p_source_6
12965          , x_transaction_coa_id       => l_adr_transaction_coa_id
12966          , x_accounting_coa_id        => l_adr_accounting_coa_id
12967          , x_value_type_code          => l_adr_value_type_code
12968          , p_side                     => 'NA'
12969    );
12970 
12971    xla_ae_lines_pkg.set_ccid(
12972     p_code_combination_id          => l_ccid
12973   , p_value_type_code              => l_adr_value_type_code
12974   , p_transaction_coa_id           => l_adr_transaction_coa_id
12975   , p_accounting_coa_id            => l_adr_accounting_coa_id
12976   , p_adr_code                     => 'CST_DEFAULT'
12977   , p_adr_type_code                => 'S'
12978   , p_component_type               => l_component_type
12979   , p_component_code               => l_component_code
12980   , p_component_type_code          => l_component_type_code
12981   , p_component_appl_id            => l_component_appl_id
12982   , p_amb_context_code             => l_amb_context_code
12983   , p_side                         => 'NA'
12984   );
12985 
12986 
12987    --
12988    --
12989    END IF;
12990    --
12991    -- Bug 4922099
12992    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12993           (NVL(l_enc_upg_option, 'N') = 'O')
12994         ) AND
12995         (l_bflow_method_code = 'PRIOR_ENTRY')
12996       )
12997    THEN
12998       IF
12999       --
13000       1 = 2
13001       --
13002       THEN
13003       xla_accounting_err_pkg.build_message
13004                                     (p_appli_s_name            => 'XLA'
13005                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13006                                     ,p_token_1                 => 'LINE_NUMBER'
13007                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13008                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13009                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13010                                                                              l_component_type
13011                                                                             ,l_component_code
13012                                                                             ,l_component_type_code
13013                                                                             ,l_component_appl_id
13014                                                                             ,l_amb_context_code
13015                                                                             ,l_entity_code
13016                                                                             ,l_event_class_code
13017                                                                            )
13018                                     ,p_token_3                 => 'OWNER'
13019                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13020                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13021                                                                           ,p_lookup_code    => l_component_type_code
13022                                                                          )
13023                                     ,p_token_4                 => 'PRODUCT_NAME'
13024                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13025                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13026                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13027                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13028                                     ,p_ae_header_id            =>  NULL
13029                                        );
13030 
13031         IF (C_LEVEL_ERROR>= g_log_level) THEN
13032                  trace
13033                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13034                       ,p_level    => C_LEVEL_ERROR
13035                       ,p_module   => l_log_module);
13036         END IF;
13037       END IF;
13038    END IF;
13039    --
13040    --
13041    ------------------------------------------------------------------------------------------------
13042    -- 4219869 Business Flow
13043    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13044    -- Prior Entry.  Currently, the following code is always generated.
13045    ------------------------------------------------------------------------------------------------
13046    XLA_AE_LINES_PKG.ValidateCurrentLine;
13047 
13048    ------------------------------------------------------------------------------------
13049    -- 4219869 Business Flow
13050    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13051    ------------------------------------------------------------------------------------
13052    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13053 
13054    ----------------------------------------------------------------------------------
13055    -- 4219869 Business Flow
13056    -- Update journal entry status -- Need to generate this within IF <condition>
13057    ----------------------------------------------------------------------------------
13058    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13059          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13060          ,p_balance_type_code => l_balance_type_code
13061          );
13062 
13063    -------------------------------------------------------------------------------------------
13064    -- 4262811 - Generate the Accrual Reversal lines
13065    -------------------------------------------------------------------------------------------
13066    BEGIN
13067       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13068                               (g_array_event(p_event_id).array_value_num('header_index'));
13069       IF l_acc_rev_flag IS NULL THEN
13070          l_acc_rev_flag := 'N';
13071       END IF;
13072    EXCEPTION
13073       WHEN OTHERS THEN
13074          l_acc_rev_flag := 'N';
13075    END;
13076    --
13077    IF (l_acc_rev_flag = 'Y') THEN
13078 
13079        -- 4645092  ------------------------------------------------------------------------------
13080        -- To allow MPA report to determine if it should generate report process
13081        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13082        ------------------------------------------------------------------------------------------
13083 
13084        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13085        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13086    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
13087    -- call ADRs
13088    -- Bug 4922099
13089    --
13090    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13091         (NVL(l_actual_upg_option, 'N') = 'O') OR
13092         (NVL(l_enc_upg_option, 'N') = 'O')
13093       )
13094    THEN
13095    NULL;
13096    --
13097    --
13098    
13099   l_ccid := AcctDerRule_2(
13100            p_application_id           => p_application_id
13101          , p_ae_header_id             => l_ae_header_id 
13102 , p_source_6 => p_source_6
13103          , x_transaction_coa_id       => l_adr_transaction_coa_id
13104          , x_accounting_coa_id        => l_adr_accounting_coa_id
13105          , x_value_type_code          => l_adr_value_type_code
13106          , p_side                     => 'NA'
13107    );
13108 
13109    xla_ae_lines_pkg.set_ccid(
13110     p_code_combination_id          => l_ccid
13111   , p_value_type_code              => l_adr_value_type_code
13112   , p_transaction_coa_id           => l_adr_transaction_coa_id
13113   , p_accounting_coa_id            => l_adr_accounting_coa_id
13114   , p_adr_code                     => 'CST_DEFAULT'
13115   , p_adr_type_code                => 'S'
13116   , p_component_type               => l_component_type
13117   , p_component_code               => l_component_code
13118   , p_component_type_code          => l_component_type_code
13119   , p_component_appl_id            => l_component_appl_id
13120   , p_amb_context_code             => l_amb_context_code
13121   , p_side                         => 'NA'
13122   );
13123 
13124 
13125    --
13126    --
13127    END IF;
13128 
13129        --
13130        -- Update the line information that should be overwritten
13131        --
13132        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13133                                          p_header_num   => 1);
13134        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13135 
13136        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13137 
13138        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13139           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13140        END IF;
13141 
13142       --
13143       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13144       --
13145       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13146           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13147       ELSE
13148           ---------------------------------------------------------------------------------------------------
13149           -- 4262811a Switch Sign
13150           ---------------------------------------------------------------------------------------------------
13151           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13152           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13153                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13154           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13155                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13156           -- 5132302
13157           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13158                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13159 
13160       END IF;
13161 
13162       -- 4955764
13163       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13164       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13165 
13166 
13167       XLA_AE_LINES_PKG.ValidateCurrentLine;
13168       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13169 
13170       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13171                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13172                ,p_balance_type_code => l_balance_type_code);
13173 
13174    END IF;
13175 
13176    -----------------------------------------------------------------------------------------
13177    -- 4262811 Multiperiod Accounting
13178    -----------------------------------------------------------------------------------------
13179      -- No MPA option is assigned.
13180 
13181 
13182 END IF;
13183 END IF;
13184 --
13185 
13186 --
13187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13188    trace
13189       (p_msg      => 'END of AcctLineType_25'
13190       ,p_level    => C_LEVEL_PROCEDURE
13191       ,p_module   => l_log_module);
13192 END IF;
13193 --
13194 EXCEPTION
13195   WHEN xla_exceptions_pkg.application_exception THEN
13196       RAISE;
13197   WHEN OTHERS THEN
13198        xla_exceptions_pkg.raise_message
13199            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_25');
13200 END AcctLineType_25;
13201 --
13202 
13203 ---------------------------------------
13204 --
13205 -- PRIVATE FUNCTION
13206 --         AcctLineType_26
13207 --
13208 ---------------------------------------
13209 PROCEDURE AcctLineType_26 (
13210   p_application_id        IN NUMBER
13211  ,p_event_id              IN NUMBER
13212  ,p_calculate_acctd_flag  IN VARCHAR2
13213  ,p_calculate_g_l_flag    IN VARCHAR2
13214  ,p_actual_flag           IN OUT VARCHAR2
13215  ,p_balance_type_code     OUT VARCHAR2
13216  ,p_gain_or_loss_ref      OUT VARCHAR2
13217  
13218 --Cost Management Default Account
13219  , p_source_6            IN NUMBER
13220 --Accounting Line Type
13221  , p_source_7            IN NUMBER
13222 --DISTRIBUTION_IDENTIFIER
13223  , p_source_8            IN NUMBER
13224 --Distribution Type
13225  , p_source_9            IN VARCHAR2
13226  , p_source_9_meaning    IN VARCHAR2
13227 --Entered Amount
13228  , p_source_10            IN NUMBER
13229 --Entered Currency Code
13230  , p_source_11            IN VARCHAR2
13231 --Currency Conversion Date
13232  , p_source_12            IN DATE
13233 --Currency Conversion Rate
13234  , p_source_13            IN NUMBER
13235 --Currency Conversion Type
13236  , p_source_14            IN VARCHAR2
13237 --Accounted Amount
13238  , p_source_15            IN NUMBER
13239 )
13240 IS
13241 
13242 l_component_type              VARCHAR2(80);
13243 l_component_code              VARCHAR2(30);
13244 l_component_type_code         VARCHAR2(1);
13245 l_component_appl_id           INTEGER;
13246 l_amb_context_code            VARCHAR2(30);
13247 l_entity_code                 VARCHAR2(30);
13248 l_event_class_code            VARCHAR2(30);
13249 l_ae_header_id                NUMBER;
13250 l_event_type_code             VARCHAR2(30);
13251 l_line_definition_code        VARCHAR2(30);
13252 l_line_definition_owner_code  VARCHAR2(1);
13253 --
13254 -- adr variables
13255 l_segment                     VARCHAR2(30);
13256 l_ccid                        NUMBER;
13257 l_adr_transaction_coa_id      NUMBER;
13258 l_adr_accounting_coa_id       NUMBER;
13259 l_adr_flexfield_segment_code  VARCHAR2(30);
13260 l_adr_flex_value_set_id       NUMBER;
13261 l_adr_value_type_code         VARCHAR2(30);
13262 l_adr_value_combination_id    NUMBER;
13263 l_adr_value_segment_code      VARCHAR2(30);
13264 
13265 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13266 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13267 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13268 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13269 
13270 -- 4262811 Variables ------------------------------------------------------------------------------------------
13271 l_entered_amt_idx             NUMBER;
13272 l_accted_amt_idx              NUMBER;
13273 l_acc_rev_flag                VARCHAR2(1);
13274 l_accrual_line_num            NUMBER;
13275 l_tmp_amt                     NUMBER;
13276 l_acc_rev_natural_side_code   VARCHAR2(1);
13277 
13278 l_num_entries                 NUMBER;
13279 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13280 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13281 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13282 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13283 l_recog_line_1                NUMBER;
13284 l_recog_line_2                NUMBER;
13285 
13286 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13287 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13288 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13289 
13290 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13291 
13292 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13293 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13294 
13295 ---------------------------------------------------------------------------------------------------------------
13296 
13297 
13298 --
13299 -- bulk performance
13300 --
13301 l_balance_type_code           VARCHAR2(1);
13302 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13303 l_log_module                  VARCHAR2(240);
13304 
13305 --
13306 -- Upgrade strategy
13307 --
13308 l_actual_upg_option           VARCHAR2(1);
13309 l_enc_upg_option           VARCHAR2(1);
13310 
13311 --
13312 BEGIN
13313 --
13314 IF g_log_enabled THEN
13315       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_26';
13316 END IF;
13317 --
13318 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13319 
13320       trace
13321          (p_msg      => 'BEGIN of AcctLineType_26'
13322          ,p_level    => C_LEVEL_PROCEDURE
13323          ,p_module   => l_log_module);
13324 
13325 END IF;
13326 --
13327 l_component_type             := 'AMB_JLT';
13328 l_component_code             := 'RELIEVE_REQ_ENC_ON_REC_IIRFOBS';
13329 l_component_type_code        := 'S';
13330 l_component_appl_id          :=  707;
13331 l_amb_context_code           := 'DEFAULT';
13332 l_entity_code                := 'MTL_ACCOUNTING_EVENTS';
13333 l_event_class_code           := 'FOB_SHIP_SENDER_SHIP';
13334 l_event_type_code            := 'FOB_SHIP_SENDER_SHIP_NO_TP';
13335 l_line_definition_owner_code := 'S';
13336 l_line_definition_code       := 'REQ_ENC_ON_IIS_FOB_SHIP_NTP';
13337 --
13338 l_balance_type_code          := 'E';
13339 l_segment                     := NULL;
13340 l_ccid                        := NULL;
13341 l_adr_transaction_coa_id      := NULL;
13342 l_adr_accounting_coa_id       := NULL;
13343 l_adr_flexfield_segment_code  := NULL;
13344 l_adr_flex_value_set_id       := NULL;
13345 l_adr_value_type_code         := NULL;
13346 l_adr_value_combination_id    := NULL;
13347 l_adr_value_segment_code      := NULL;
13348 
13349 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13350 l_bflow_class_code           := '';    -- 4219869 Business Flow
13351 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13352 l_budgetary_control_flag     := 'Y';
13353 
13354 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13355 l_bflow_applied_to_amt       := NULL; -- 5132302
13356 l_entered_amt_idx            := NULL;          -- 4262811
13357 l_accted_amt_idx             := NULL;          -- 4262811
13358 l_acc_rev_flag               := NULL;          -- 4262811
13359 l_accrual_line_num           := NULL;          -- 4262811
13360 l_tmp_amt                    := NULL;          -- 4262811
13361 --
13362  
13363 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13364     l_balance_type_code <> 'B' THEN
13365 IF NVL(p_source_7,9E125) =  15
13366  THEN 
13367 
13368    --
13369    XLA_AE_LINES_PKG.SetNewLine;
13370 
13371    p_balance_type_code          := l_balance_type_code;
13372    -- set the flag so later we will know whether the gain loss line needs to be created
13373    
13374    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13375      p_actual_flag :='A';
13376    END IF;
13377 
13378    --
13379    -- bulk performance
13380    --
13381    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13382                                       p_header_num   => 0); -- 4262811
13383    --
13384    -- set accounting line options
13385    --
13386    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13387            p_natural_side_code          => 'D'
13388          , p_gain_or_loss_flag          => 'N'
13389          , p_gl_transfer_mode_code      => 'S'
13390          , p_acct_entry_type_code       => 'E'
13391          , p_switch_side_flag           => 'Y'
13392          , p_merge_duplicate_code       => 'N'
13393          );
13394    --
13395    l_acc_rev_natural_side_code := 'C';  -- 4262811
13396    -- 
13397    --
13398    -- set accounting line type info
13399    --
13400    xla_ae_lines_pkg.SetAcctLineType
13401       (p_component_type             => l_component_type
13402       ,p_event_type_code            => l_event_type_code
13403       ,p_line_definition_owner_code => l_line_definition_owner_code
13404       ,p_line_definition_code       => l_line_definition_code
13405       ,p_accounting_line_code       => l_component_code
13406       ,p_accounting_line_type_code  => l_component_type_code
13407       ,p_accounting_line_appl_id    => l_component_appl_id
13408       ,p_amb_context_code           => l_amb_context_code
13409       ,p_entity_code                => l_entity_code
13410       ,p_event_class_code           => l_event_class_code);
13411    --
13412    -- set accounting class
13413    --
13414    xla_ae_lines_pkg.SetAcctClass(
13415            p_accounting_class_code  => 'REQUISITION'
13416          , p_ae_header_id           => l_ae_header_id
13417          );
13418 
13419    --
13420    -- set rounding class
13421    --
13422    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13423                       'REQUISITION';
13424 
13425    --
13426    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13427    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13428    --
13429    -- bulk performance
13430    --
13431    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13432 
13433    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13434       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13435 
13436    -- 4955764
13437    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13438       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13439 
13440    -- 4458381 Public Sector Enh
13441       XLA_AE_LINES_PKG.g_rec_lines.array_encumbrance_type_id(XLA_AE_LINES_PKG.g_LineNumber) := 1000;
13442    --
13443    -- set accounting attributes for the line type
13444    --
13445    l_entered_amt_idx := 3;
13446    l_accted_amt_idx  := 8;
13447    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13448    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13449    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_8);
13450    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13451    l_rec_acct_attrs.array_char_value(2)  := p_source_9;
13452    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13453    l_rec_acct_attrs.array_num_value(3)  := p_source_10;
13454    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13455    l_rec_acct_attrs.array_char_value(4)  := p_source_11;
13456    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13457    l_rec_acct_attrs.array_date_value(5)  := p_source_12;
13458    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13459    l_rec_acct_attrs.array_num_value(6)  := p_source_13;
13460    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13461    l_rec_acct_attrs.array_char_value(7)  := p_source_14;
13462    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
13463    l_rec_acct_attrs.array_num_value(8)  := p_source_15;
13464 
13465    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13466    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13467 
13468    ---------------------------------------------------------------------------------------------------------------
13469    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13470    ---------------------------------------------------------------------------------------------------------------
13471    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13472 
13473    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13474    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13475 
13476    IF xla_accounting_cache_pkg.GetValueChar
13477          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13478          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13479    AND l_bflow_method_code = 'PRIOR_ENTRY'
13480 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13481    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13482          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13483        )
13484    THEN
13485          xla_ae_lines_pkg.BflowUpgEntry
13486            (p_business_method_code    => l_bflow_method_code
13487            ,p_business_class_code     => l_bflow_class_code
13488            ,p_balance_type            => l_balance_type_code);
13489    ELSE
13490       NULL;
13491 -- No business flow processing for business flow method of NONE.
13492    END IF;
13493 
13494    --
13495    -- call analytical criteria
13496    --
13497    
13498    --
13499    -- call description
13500    --
13501    -- No description or it is inherited.
13502    --
13503    -- call ADRs
13504    -- Bug 4922099
13505    --
13506    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13507         (NVL(l_actual_upg_option, 'N') = 'O') OR
13508         (NVL(l_enc_upg_option, 'N') = 'O')
13509       )
13510    THEN
13511    NULL;
13512    --
13513    --
13514    
13515   l_ccid := AcctDerRule_2(
13516            p_application_id           => p_application_id
13517          , p_ae_header_id             => l_ae_header_id 
13518 , p_source_6 => p_source_6
13519          , x_transaction_coa_id       => l_adr_transaction_coa_id
13520          , x_accounting_coa_id        => l_adr_accounting_coa_id
13521          , x_value_type_code          => l_adr_value_type_code
13522          , p_side                     => 'NA'
13523    );
13524 
13525    xla_ae_lines_pkg.set_ccid(
13526     p_code_combination_id          => l_ccid
13527   , p_value_type_code              => l_adr_value_type_code
13528   , p_transaction_coa_id           => l_adr_transaction_coa_id
13529   , p_accounting_coa_id            => l_adr_accounting_coa_id
13530   , p_adr_code                     => 'CST_DEFAULT'
13531   , p_adr_type_code                => 'S'
13532   , p_component_type               => l_component_type
13533   , p_component_code               => l_component_code
13534   , p_component_type_code          => l_component_type_code
13535   , p_component_appl_id            => l_component_appl_id
13536   , p_amb_context_code             => l_amb_context_code
13537   , p_side                         => 'NA'
13538   );
13539 
13540 
13541    --
13542    --
13543    END IF;
13544    --
13545    -- Bug 4922099
13546    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13547           (NVL(l_enc_upg_option, 'N') = 'O')
13548         ) AND
13549         (l_bflow_method_code = 'PRIOR_ENTRY')
13550       )
13551    THEN
13552       IF
13553       --
13554       1 = 2
13555       --
13556       THEN
13557       xla_accounting_err_pkg.build_message
13558                                     (p_appli_s_name            => 'XLA'
13559                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13560                                     ,p_token_1                 => 'LINE_NUMBER'
13561                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13562                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13563                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13564                                                                              l_component_type
13565                                                                             ,l_component_code
13566                                                                             ,l_component_type_code
13567                                                                             ,l_component_appl_id
13568                                                                             ,l_amb_context_code
13569                                                                             ,l_entity_code
13570                                                                             ,l_event_class_code
13571                                                                            )
13572                                     ,p_token_3                 => 'OWNER'
13573                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13574                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13575                                                                           ,p_lookup_code    => l_component_type_code
13576                                                                          )
13577                                     ,p_token_4                 => 'PRODUCT_NAME'
13578                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13579                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13580                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13581                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13582                                     ,p_ae_header_id            =>  NULL
13583                                        );
13584 
13585         IF (C_LEVEL_ERROR>= g_log_level) THEN
13586                  trace
13587                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13588                       ,p_level    => C_LEVEL_ERROR
13589                       ,p_module   => l_log_module);
13590         END IF;
13591       END IF;
13592    END IF;
13593    --
13594    --
13595    ------------------------------------------------------------------------------------------------
13596    -- 4219869 Business Flow
13597    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13598    -- Prior Entry.  Currently, the following code is always generated.
13599    ------------------------------------------------------------------------------------------------
13600    XLA_AE_LINES_PKG.ValidateCurrentLine;
13601 
13602    ------------------------------------------------------------------------------------
13603    -- 4219869 Business Flow
13604    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13605    ------------------------------------------------------------------------------------
13606    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13607 
13608    ----------------------------------------------------------------------------------
13609    -- 4219869 Business Flow
13610    -- Update journal entry status -- Need to generate this within IF <condition>
13611    ----------------------------------------------------------------------------------
13612    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13613          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13614          ,p_balance_type_code => l_balance_type_code
13615          );
13616 
13617    -------------------------------------------------------------------------------------------
13618    -- 4262811 - Generate the Accrual Reversal lines
13619    -------------------------------------------------------------------------------------------
13620    BEGIN
13621       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13622                               (g_array_event(p_event_id).array_value_num('header_index'));
13623       IF l_acc_rev_flag IS NULL THEN
13624          l_acc_rev_flag := 'N';
13625       END IF;
13626    EXCEPTION
13627       WHEN OTHERS THEN
13628          l_acc_rev_flag := 'N';
13629    END;
13630    --
13631    IF (l_acc_rev_flag = 'Y') THEN
13632 
13633        -- 4645092  ------------------------------------------------------------------------------
13634        -- To allow MPA report to determine if it should generate report process
13635        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13636        ------------------------------------------------------------------------------------------
13637 
13638        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13639        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13640    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
13641    -- call ADRs
13642    -- Bug 4922099
13643    --
13644    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13645         (NVL(l_actual_upg_option, 'N') = 'O') OR
13646         (NVL(l_enc_upg_option, 'N') = 'O')
13647       )
13648    THEN
13649    NULL;
13650    --
13651    --
13652    
13653   l_ccid := AcctDerRule_2(
13654            p_application_id           => p_application_id
13655          , p_ae_header_id             => l_ae_header_id 
13656 , p_source_6 => p_source_6
13657          , x_transaction_coa_id       => l_adr_transaction_coa_id
13658          , x_accounting_coa_id        => l_adr_accounting_coa_id
13659          , x_value_type_code          => l_adr_value_type_code
13660          , p_side                     => 'NA'
13661    );
13662 
13663    xla_ae_lines_pkg.set_ccid(
13664     p_code_combination_id          => l_ccid
13665   , p_value_type_code              => l_adr_value_type_code
13666   , p_transaction_coa_id           => l_adr_transaction_coa_id
13667   , p_accounting_coa_id            => l_adr_accounting_coa_id
13668   , p_adr_code                     => 'CST_DEFAULT'
13669   , p_adr_type_code                => 'S'
13670   , p_component_type               => l_component_type
13671   , p_component_code               => l_component_code
13672   , p_component_type_code          => l_component_type_code
13673   , p_component_appl_id            => l_component_appl_id
13674   , p_amb_context_code             => l_amb_context_code
13675   , p_side                         => 'NA'
13676   );
13677 
13678 
13679    --
13680    --
13681    END IF;
13682 
13683        --
13684        -- Update the line information that should be overwritten
13685        --
13686        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13687                                          p_header_num   => 1);
13688        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13689 
13690        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13691 
13692        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13693           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13694        END IF;
13695 
13696       --
13697       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13698       --
13699       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13700           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13701       ELSE
13702           ---------------------------------------------------------------------------------------------------
13703           -- 4262811a Switch Sign
13704           ---------------------------------------------------------------------------------------------------
13705           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13706           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13707                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13708           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13709                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13710           -- 5132302
13711           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13712                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13713 
13714       END IF;
13715 
13716       -- 4955764
13717       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13718       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13719 
13720 
13721       XLA_AE_LINES_PKG.ValidateCurrentLine;
13722       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13723 
13724       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13725                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13726                ,p_balance_type_code => l_balance_type_code);
13727 
13728    END IF;
13729 
13730    -----------------------------------------------------------------------------------------
13731    -- 4262811 Multiperiod Accounting
13732    -----------------------------------------------------------------------------------------
13733      -- No MPA option is assigned.
13734 
13735 
13736 END IF;
13737 END IF;
13738 --
13739 
13740 --
13741 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13742    trace
13743       (p_msg      => 'END of AcctLineType_26'
13744       ,p_level    => C_LEVEL_PROCEDURE
13745       ,p_module   => l_log_module);
13746 END IF;
13747 --
13748 EXCEPTION
13749   WHEN xla_exceptions_pkg.application_exception THEN
13750       RAISE;
13751   WHEN OTHERS THEN
13752        xla_exceptions_pkg.raise_message
13753            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.AcctLineType_26');
13754 END AcctLineType_26;
13755 --
13756 
13757 ---------------------------------------
13758 --
13759 -- PRIVATE PROCEDURE
13760 --         insert_sources_27
13761 --
13762 ----------------------------------------
13763 --
13764 PROCEDURE insert_sources_27(
13765                                 p_target_ledger_id       IN NUMBER
13766                               , p_language               IN VARCHAR2
13767                               , p_sla_ledger_id          IN NUMBER
13768                               , p_pad_start_date         IN DATE
13769                               , p_pad_end_date           IN DATE
13770                          )
13771 IS
13772 
13773 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DELIVER_EXPENSE_ALL';
13774 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DELIVER_EXPENSE';
13775 p_apps_owner                   VARCHAR2(30);
13776 l_log_module                   VARCHAR2(240);
13777 BEGIN
13778 IF g_log_enabled THEN
13779       l_log_module := C_DEFAULT_MODULE||'.insert_sources_27';
13780 END IF;
13781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13782 
13783       trace
13784          (p_msg      => 'BEGIN of insert_sources_27'
13785          ,p_level    => C_LEVEL_PROCEDURE
13786          ,p_module   => l_log_module);
13787 
13788 END IF;
13789 
13790 -- select APPS owner
13791 SELECT oracle_username
13792   INTO p_apps_owner
13793   FROM fnd_oracle_userid
13794  WHERE read_only_flag = 'U'
13795 ;
13796 
13797 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13798       trace
13799          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
13800                         ' - p_language = '||p_language||
13801                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
13802                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
13803                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
13804                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
13805          ,p_level    => C_LEVEL_STATEMENT
13806          ,p_module   => l_log_module);
13807 END IF;
13808 
13809 
13810 --
13811 INSERT INTO xla_diag_sources --hdr2
13812 (
13813         event_id
13814       , ledger_id
13815       , sla_ledger_id
13816       , description_language
13817       , object_name
13818       , object_type_code
13819       , line_number
13820       , source_application_id
13821       , source_type_code
13822       , source_code
13823       , source_value
13824       , source_meaning
13825       , created_by
13826       , creation_date
13827       , last_update_date
13828       , last_updated_by
13829       , last_update_login
13830       , program_update_date
13831       , program_application_id
13832       , program_id
13833       , request_id
13834 )
13835 SELECT
13836         event_id
13837       , p_target_ledger_id
13838       , p_sla_ledger_id
13839       , p_language
13840       , object_name
13841       , object_type_code
13842       , line_number
13843       , source_application_id
13844       , source_type_code
13845       , source_code
13846       , SUBSTR(source_value ,1,1996)
13847       , SUBSTR(source_meaning ,1,200)
13848       , xla_environment_pkg.g_Usr_Id
13849       , TRUNC(SYSDATE)
13850       , TRUNC(SYSDATE)
13851       , xla_environment_pkg.g_Usr_Id
13852       , xla_environment_pkg.g_Login_Id
13853       , TRUNC(SYSDATE)
13854       , xla_environment_pkg.g_Prog_Appl_Id
13855       , xla_environment_pkg.g_Prog_Id
13856       , xla_environment_pkg.g_Req_Id
13857   FROM (
13858        SELECT xet.event_id                  event_id
13859             , 0                          line_number
13860             , CASE r
13861                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
13862                 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V' 
13863                 WHEN 3 THEN 'PO_HEADERS_REF_V' 
13864                 WHEN 4 THEN 'CST_XLA_RCV_REF_V' 
13865                 WHEN 5 THEN 'CST_XLA_RCV_REF_V' 
13866                 WHEN 6 THEN 'CST_XLA_RCV_REF_V' 
13867                 WHEN 7 THEN 'CST_XLA_RCV_REF_V' 
13868                 WHEN 8 THEN 'PO_DISTS_REF_V' 
13869                 WHEN 9 THEN 'CST_XLA_RCV_REF_V' 
13870                 WHEN 10 THEN 'CST_XLA_RCV_REF_V' 
13871                 WHEN 11 THEN 'PSA_CST_XLA_UPG_V' 
13872                 WHEN 12 THEN 'PO_HEADERS_REF_V' 
13873                 WHEN 13 THEN 'CST_XLA_RCV_REF_V' 
13874                 WHEN 14 THEN 'PO_DISTS_REF_V' 
13875                 WHEN 15 THEN 'CST_XLA_RCV_HEADERS_V' 
13876                 
13877                ELSE null
13878               END                           object_name
13879             , CASE r
13880                 WHEN 1 THEN 'HEADER' 
13881                 WHEN 2 THEN 'HEADER' 
13882                 WHEN 3 THEN 'HEADER' 
13883                 WHEN 4 THEN 'HEADER' 
13884                 WHEN 5 THEN 'HEADER' 
13885                 WHEN 6 THEN 'HEADER' 
13886                 WHEN 7 THEN 'HEADER' 
13887                 WHEN 8 THEN 'HEADER' 
13888                 WHEN 9 THEN 'HEADER' 
13889                 WHEN 10 THEN 'HEADER' 
13890                 WHEN 11 THEN 'HEADER' 
13891                 WHEN 12 THEN 'HEADER' 
13892                 WHEN 13 THEN 'HEADER' 
13893                 WHEN 14 THEN 'HEADER' 
13894                 WHEN 15 THEN 'HEADER' 
13895                 
13896                 ELSE null
13897               END                           object_type_code
13898             , CASE r
13899                 WHEN 1 THEN '707' 
13900                 WHEN 2 THEN '707' 
13901                 WHEN 3 THEN '201' 
13902                 WHEN 4 THEN '707' 
13903                 WHEN 5 THEN '707' 
13904                 WHEN 6 THEN '707' 
13905                 WHEN 7 THEN '707' 
13906                 WHEN 8 THEN '201' 
13907                 WHEN 9 THEN '707' 
13908                 WHEN 10 THEN '707' 
13909                 WHEN 11 THEN '707' 
13910                 WHEN 12 THEN '201' 
13911                 WHEN 13 THEN '707' 
13912                 WHEN 14 THEN '201' 
13913                 WHEN 15 THEN '707' 
13914                 
13915                 ELSE null
13916               END                           source_application_id
13917             , 'S'             source_type_code
13918             , CASE r
13919                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
13920                 WHEN 2 THEN 'CURRENCY_CODE' 
13921                 WHEN 3 THEN 'PURCH_ENCUMBRANCE_FLAG' 
13922                 WHEN 4 THEN 'APPLIED_TO_APPL_ID' 
13923                 WHEN 5 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
13924                 WHEN 6 THEN 'APPLIED_TO_ENTITY_CODE' 
13925                 WHEN 7 THEN 'APPLIED_TO_PO_DOC_ID' 
13926                 WHEN 8 THEN 'PO_BUDGET_ACCOUNT' 
13927                 WHEN 9 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
13928                 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
13929                 WHEN 11 THEN 'CST_ENCUM_UPG_OPTION' 
13930                 WHEN 12 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
13931                 WHEN 13 THEN 'PO_DISTRIBUTION_ID' 
13932                 WHEN 14 THEN 'RESERVED_FLAG' 
13933                 WHEN 15 THEN 'TRANSFER_TO_GL_INDICATOR' 
13934                 
13935                 ELSE null
13936               END                           source_code
13937             , CASE r
13938                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
13939                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
13940                 WHEN 3 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_FLAG)
13941                 WHEN 4 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
13942                 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
13943                 WHEN 6 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
13944                 WHEN 7 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
13945                 WHEN 8 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
13946                 WHEN 9 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
13947                 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
13948                 WHEN 11 THEN TO_CHAR(h6.CST_ENCUM_UPG_OPTION)
13949                 WHEN 12 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
13950                 WHEN 13 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
13951                 WHEN 14 THEN TO_CHAR(h4.RESERVED_FLAG)
13952                 WHEN 15 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
13953                 
13954                 ELSE null
13955               END                           source_value
13956             , CASE r
13957                 WHEN 1 THEN fvl9.meaning
13958                 WHEN 15 THEN fvl42.meaning
13959                 
13960                 ELSE null
13961               END               source_meaning
13962          FROM xla_events_gt     xet  
13963       , CST_XLA_RCV_HEADERS_V  h1
13964       , CST_XLA_RCV_REF_V  h3
13965       , PO_DISTS_REF_V  h4
13966       , PO_HEADERS_REF_V  h5
13967       , PSA_CST_XLA_UPG_V  h6
13968   , fnd_lookup_values    fvl9
13969   , fnd_lookup_values    fvl42
13970              ,(select rownum r from all_objects where rownum <= 15 and owner = p_apps_owner)
13971          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
13972            AND xet.event_class_code = C_EVENT_CLASS_CODE
13973               AND h1.event_id = xet.event_id
13974  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 fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
13975   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
13976   AND fvl9.view_application_id(+) = 700
13977   AND fvl9.language(+)            = USERENV('LANG')
13978      AND fvl42.lookup_type(+)         = 'YES_NO'
13979   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
13980   AND fvl42.view_application_id(+) = 0
13981   AND fvl42.language(+)            = USERENV('LANG')
13982   
13983 )
13984 ;
13985 --
13986 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
13987 
13988       trace
13989          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
13990          ,p_level    => C_LEVEL_STATEMENT
13991          ,p_module   => l_log_module);
13992 
13993 END IF;
13994 --
13995 
13996 
13997 
13998 --
13999 INSERT INTO xla_diag_sources  --line2
14000 (
14001         event_id
14002       , ledger_id
14003       , sla_ledger_id
14004       , description_language
14005       , object_name
14006       , object_type_code
14007       , line_number
14008       , source_application_id
14009       , source_type_code
14010       , source_code
14011       , source_value
14012       , source_meaning
14013       , created_by
14014       , creation_date
14015       , last_update_date
14016       , last_updated_by
14017       , last_update_login
14018       , program_update_date
14019       , program_application_id
14020       , program_id
14021       , request_id
14022 )
14023 SELECT  event_id
14024       , p_target_ledger_id
14025       , p_sla_ledger_id
14026       , p_language
14027       , object_name
14028       , object_type_code
14029       , line_number
14030       , source_application_id
14031       , source_type_code
14032       , source_code
14033       , SUBSTR(source_value,1,1996)
14034       , SUBSTR(source_meaning ,1,200)
14035       , xla_environment_pkg.g_Usr_Id
14036       , TRUNC(SYSDATE)
14037       , TRUNC(SYSDATE)
14038       , xla_environment_pkg.g_Usr_Id
14039       , xla_environment_pkg.g_Login_Id
14040       , TRUNC(SYSDATE)
14041       , xla_environment_pkg.g_Prog_Appl_Id
14042       , xla_environment_pkg.g_Prog_Id
14043       , xla_environment_pkg.g_Req_Id
14044   FROM (
14045        SELECT xet.event_id                  event_id
14046             , l2.line_number                 line_number
14047             , CASE r
14048                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
14049                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
14050                 
14051                ELSE null
14052               END                           object_name
14053             , CASE r
14054                 WHEN 1 THEN 'LINE' 
14055                 WHEN 2 THEN 'LINE' 
14056                 
14057                 ELSE null
14058               END                           object_type_code
14059             , CASE r
14060                 WHEN 1 THEN '707' 
14061                 WHEN 2 THEN '707' 
14062                 
14063                 ELSE null
14064               END                           source_application_id
14065             , 'S'             source_type_code
14066             , CASE r
14067                 WHEN 1 THEN 'DISTRIBUTION_IDENTIFIER' 
14068                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
14069                 
14070                 ELSE null
14071               END                           source_code
14072             , CASE r
14073                 WHEN 1 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
14074                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
14075                 
14076                 ELSE null
14077               END                           source_value
14078             , null              source_meaning
14079          FROM  xla_events_gt     xet  
14080         , CST_XLA_RCV_LINES_V  l2
14081             , (select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
14082         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
14083           AND xet.event_class_code = C_EVENT_CLASS_CODE
14084             AND l2.event_id          = xet.event_id
14085 
14086 )
14087 ;
14088 --
14089 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14090 
14091       trace
14092          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
14093          ,p_level    => C_LEVEL_STATEMENT
14094          ,p_module   => l_log_module);
14095 
14096 END IF;
14097 
14098 
14099 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14100       trace
14101          (p_msg      => 'END of insert_sources_27'
14102          ,p_level    => C_LEVEL_PROCEDURE
14103          ,p_module   => l_log_module);
14104 END IF;
14105 EXCEPTION
14106   WHEN xla_exceptions_pkg.application_exception THEN
14107       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
14108             trace
14109                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
14110                ,p_level    => C_LEVEL_EXCEPTION
14111                ,p_module   => l_log_module);
14112       END IF;
14113       RAISE;
14114   WHEN OTHERS THEN
14115       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
14116             trace
14117                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
14118                ,p_level    => C_LEVEL_EXCEPTION
14119                ,p_module   => l_log_module);
14120        END IF;
14121        xla_exceptions_pkg.raise_message
14122            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_27');
14123 END insert_sources_27;
14124 --
14125 
14126 ---------------------------------------
14127 --
14128 -- PRIVATE FUNCTION
14129 --         EventClass_27
14130 --
14131 ----------------------------------------
14132 --
14133 FUNCTION EventClass_27
14134        (p_application_id         IN NUMBER
14135        ,p_base_ledger_id         IN NUMBER
14136        ,p_target_ledger_id       IN NUMBER
14137        ,p_language               IN VARCHAR2
14138        ,p_currency_code          IN VARCHAR2
14139        ,p_sla_ledger_id          IN NUMBER
14140        ,p_pad_start_date         IN DATE
14141        ,p_pad_end_date           IN DATE
14142        ,p_primary_ledger_id      IN NUMBER)
14143 RETURN BOOLEAN IS
14144 --
14145 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DELIVER_EXPENSE_ALL';
14146 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DELIVER_EXPENSE';
14147 
14148 l_calculate_acctd_flag   VARCHAR2(1) :='N';
14149 l_calculate_g_l_flag     VARCHAR2(1) :='N';
14150 --
14151 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
14152 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
14153 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
14154 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
14155 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
14156 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
14157 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
14158 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
14159 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
14160 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
14161 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
14162 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
14163 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
14164 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
14165 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
14166 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
14167 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
14168 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
14169 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
14170 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
14171 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
14172 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
14173 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
14174 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
14175 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
14176 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
14177 
14178 l_event_id                             NUMBER;
14179 l_previous_event_id                    NUMBER;
14180 l_first_event_id                       NUMBER;
14181 l_last_event_id                        NUMBER;
14182 
14183 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
14184 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
14185 --
14186 --
14187 l_result                    BOOLEAN := TRUE;
14188 l_rows                      NUMBER  := 1000;
14189 l_event_type_name           VARCHAR2(80) := 'All';
14190 l_event_class_name          VARCHAR2(80) := 'Delivery to Expense Destination';
14191 l_description               VARCHAR2(4000);
14192 l_transaction_reversal      NUMBER;
14193 l_ae_header_id              NUMBER;
14194 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
14195 l_log_module                VARCHAR2(240);
14196 --
14197 l_acct_reversal_source      VARCHAR2(30);
14198 l_trx_reversal_source       VARCHAR2(30);
14199 
14200 l_continue_with_lines       BOOLEAN := TRUE;
14201 --
14202 l_acc_rev_gl_date_source    DATE;                      -- 4262811
14203 --
14204 type t_array_event_id is table of number index by binary_integer;
14205 
14206 l_rec_array_event                    t_rec_array_event;
14207 l_null_rec_array_event               t_rec_array_event;
14208 l_array_ae_header_id                 xla_number_array_type;
14209 l_actual_flag                        VARCHAR2(1) := NULL;
14210 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
14211 l_balance_type_code                  VARCHAR2(1) :=NULL;
14212 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
14213 
14214 --
14215 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
14216 --
14217 
14218 TYPE t_array_source_9 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
14219 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
14220 TYPE t_array_source_16 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
14221 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
14222 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
14223 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
14224 TYPE t_array_source_23 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
14225 TYPE t_array_source_24 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
14226 TYPE t_array_source_25 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
14227 TYPE t_array_source_26 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
14228 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
14229 TYPE t_array_source_28 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
14230 TYPE t_array_source_30 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
14231 TYPE t_array_source_31 IS TABLE OF PO_DISTS_REF_V.RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
14232 TYPE t_array_source_42 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
14233 
14234 TYPE t_array_source_8 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
14235 TYPE t_array_source_29 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
14236 
14237 l_array_source_9              t_array_source_9;
14238 l_array_source_9_meaning      t_array_lookup_meaning;
14239 l_array_source_11              t_array_source_11;
14240 l_array_source_16              t_array_source_16;
14241 l_array_source_19              t_array_source_19;
14242 l_array_source_20              t_array_source_20;
14243 l_array_source_21              t_array_source_21;
14244 l_array_source_23              t_array_source_23;
14245 l_array_source_24              t_array_source_24;
14246 l_array_source_25              t_array_source_25;
14247 l_array_source_26              t_array_source_26;
14248 l_array_source_27              t_array_source_27;
14249 l_array_source_28              t_array_source_28;
14250 l_array_source_30              t_array_source_30;
14251 l_array_source_31              t_array_source_31;
14252 l_array_source_42              t_array_source_42;
14253 l_array_source_42_meaning      t_array_lookup_meaning;
14254 
14255 l_array_source_8      t_array_source_8;
14256 l_array_source_29      t_array_source_29;
14257 
14258 --
14259 CURSOR header_cur
14260 IS
14261 SELECT /*+ leading(xet) cardinality(xet,1) */
14262 -- Event Class Code: DELIVER_EXPENSE
14263     xet.entity_id
14264    ,xet.legal_entity_id
14265    ,xet.entity_code
14266    ,xet.transaction_number
14267    ,xet.event_id
14268    ,xet.event_class_code
14269    ,xet.event_type_code
14270    ,xet.event_number
14271    ,xet.event_date
14272    ,xet.transaction_date
14273    ,xet.reference_num_1
14274    ,xet.reference_num_2
14275    ,xet.reference_num_3
14276    ,xet.reference_num_4
14277    ,xet.reference_char_1
14278    ,xet.reference_char_2
14279    ,xet.reference_char_3
14280    ,xet.reference_char_4
14281    ,xet.reference_date_1
14282    ,xet.reference_date_2
14283    ,xet.reference_date_3
14284    ,xet.reference_date_4
14285    ,xet.event_created_by
14286    ,xet.budgetary_control_flag 
14287   , h1.DISTRIBUTION_TYPE    source_9
14288   , fvl9.meaning   source_9_meaning
14289   , h1.CURRENCY_CODE    source_11
14290   , h5.PURCH_ENCUMBRANCE_FLAG    source_16
14291   , h3.APPLIED_TO_APPL_ID    source_19
14292   , h3.APPLIED_TO_DIST_LINK_TYPE    source_20
14293   , h3.APPLIED_TO_ENTITY_CODE    source_21
14294   , h3.APPLIED_TO_PO_DOC_ID    source_23
14295   , h4.PO_BUDGET_ACCOUNT    source_24
14296   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_25
14297   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_26
14298   , h6.CST_ENCUM_UPG_OPTION    source_27
14299   , h5.PURCH_ENCUMBRANCE_TYPE_ID    source_28
14300   , h3.PO_DISTRIBUTION_ID    source_30
14301   , h4.RESERVED_FLAG    source_31
14302   , h1.TRANSFER_TO_GL_INDICATOR    source_42
14303   , fvl42.meaning   source_42_meaning
14304   FROM xla_events_gt     xet 
14305   , CST_XLA_RCV_HEADERS_V  h1
14306   , CST_XLA_RCV_REF_V  h3
14307   , PO_DISTS_REF_V  h4
14308   , PO_HEADERS_REF_V  h5
14309   , PSA_CST_XLA_UPG_V  h6
14310   , fnd_lookup_values    fvl9
14311   , fnd_lookup_values    fvl42
14312  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
14313    and xet.event_class_code = C_EVENT_CLASS_CODE
14314    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
14315  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 fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
14316   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
14317   AND fvl9.view_application_id(+) = 700
14318   AND fvl9.language(+)            = USERENV('LANG')
14319      AND fvl42.lookup_type(+)         = 'YES_NO'
14320   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
14321   AND fvl42.view_application_id(+) = 0
14322   AND fvl42.language(+)            = USERENV('LANG')
14323   
14324  ORDER BY event_id
14325 ;
14326 
14327 
14328 --
14329 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
14330 IS
14331 SELECT  /*+ leading(xet) cardinality(xet,1) */
14332 -- Event Class Code: DELIVER_EXPENSE
14333     xet.entity_id
14334    ,xet.legal_entity_id
14335    ,xet.entity_code
14336    ,xet.transaction_number
14337    ,xet.event_id
14338    ,xet.event_class_code
14339    ,xet.event_type_code
14340    ,xet.event_number
14341    ,xet.event_date
14342    ,xet.transaction_date
14343    ,xet.reference_num_1
14344    ,xet.reference_num_2
14345    ,xet.reference_num_3
14346    ,xet.reference_num_4
14347    ,xet.reference_char_1
14348    ,xet.reference_char_2
14349    ,xet.reference_char_3
14350    ,xet.reference_char_4
14351    ,xet.reference_date_1
14352    ,xet.reference_date_2
14353    ,xet.reference_date_3
14354    ,xet.reference_date_4
14355    ,xet.event_created_by
14356    ,xet.budgetary_control_flag
14357  , l2.LINE_NUMBER  
14358   , l2.DISTRIBUTION_IDENTIFIER    source_8
14359   , l2.RCV_ACCOUNTING_LINE_TYPE    source_29
14360   FROM xla_events_gt     xet 
14361   , CST_XLA_RCV_LINES_V  l2
14362  WHERE xet.event_id between x_first_event_id and x_last_event_id
14363    and xet.event_date between p_pad_start_date and p_pad_end_date
14364    and xet.event_class_code = C_EVENT_CLASS_CODE
14365    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
14366 ;
14367 
14368 --
14369 BEGIN
14370 IF g_log_enabled THEN
14371    l_log_module := C_DEFAULT_MODULE||'.EventClass_27';
14372 END IF;
14373 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14374    trace
14375       (p_msg      => 'BEGIN of EventClass_27'
14376       ,p_level    => C_LEVEL_PROCEDURE
14377       ,p_module   => l_log_module);
14378 END IF;
14379 
14380 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14381    trace
14382       (p_msg      => 'p_application_id = '||p_application_id||
14383                      ' - p_base_ledger_id = '||p_base_ledger_id||
14384                      ' - p_target_ledger_id  = '||p_target_ledger_id||
14385                      ' - p_language = '||p_language||
14386                      ' - p_currency_code = '||p_currency_code||
14387                      ' - p_sla_ledger_id = '||p_sla_ledger_id
14388       ,p_level    => C_LEVEL_STATEMENT
14389       ,p_module   => l_log_module);
14390 END IF;
14391 --
14392 -- initialze arrays
14393 --
14394 g_array_event.DELETE;
14395 l_rec_array_event := l_null_rec_array_event;
14396 --
14397 --------------------------------------
14398 -- 4262811 Initialze MPA Line Number
14399 --------------------------------------
14400 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
14401 
14402 --
14403 
14404 --
14405 OPEN header_cur;
14406 --
14407 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14408    trace
14409    (p_msg      => 'SQL - FETCH header_cur'
14410    ,p_level    => C_LEVEL_STATEMENT
14411    ,p_module   => l_log_module);
14412 END IF;
14413 --
14414 LOOP
14415 FETCH header_cur BULK COLLECT INTO
14416         l_array_entity_id
14417       , l_array_legal_entity_id
14418       , l_array_entity_code
14419       , l_array_transaction_num
14420       , l_array_event_id
14421       , l_array_class_code
14422       , l_array_event_type
14423       , l_array_event_number
14424       , l_array_event_date
14425       , l_array_transaction_date
14426       , l_array_reference_num_1
14427       , l_array_reference_num_2
14428       , l_array_reference_num_3
14429       , l_array_reference_num_4
14430       , l_array_reference_char_1
14431       , l_array_reference_char_2
14432       , l_array_reference_char_3
14433       , l_array_reference_char_4
14434       , l_array_reference_date_1
14435       , l_array_reference_date_2
14436       , l_array_reference_date_3
14437       , l_array_reference_date_4
14438       , l_array_event_created_by
14439       , l_array_budgetary_control_flag 
14440       , l_array_source_9
14441       , l_array_source_9_meaning
14442       , l_array_source_11
14443       , l_array_source_16
14444       , l_array_source_19
14445       , l_array_source_20
14446       , l_array_source_21
14447       , l_array_source_23
14448       , l_array_source_24
14449       , l_array_source_25
14450       , l_array_source_26
14451       , l_array_source_27
14452       , l_array_source_28
14453       , l_array_source_30
14454       , l_array_source_31
14455       , l_array_source_42
14456       , l_array_source_42_meaning
14457       LIMIT l_rows;
14458 --
14459 IF (C_LEVEL_EVENT >= g_log_level) THEN
14460    trace
14461    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
14462    ,p_level    => C_LEVEL_EVENT
14463    ,p_module   => l_log_module);
14464 END IF;
14465 --
14466 EXIT WHEN l_array_entity_id.COUNT = 0;
14467 
14468 -- initialize arrays
14469 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
14470 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
14471 
14472 --
14473 -- Bug 4458708
14474 --
14475 XLA_AE_LINES_PKG.g_LineNumber := 0;
14476 
14477 
14478 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
14479 g_last_hdr_idx := l_array_event_id.LAST;
14480 --
14481 -- loop for the headers. Each iteration is for each header extract row
14482 -- fetched in header cursor
14483 --
14484 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
14485 
14486 --
14487 -- set event info as cache for other routines to refer event attributes
14488 --
14489 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
14490    (p_application_id           => p_application_id
14491    ,p_primary_ledger_id        => p_primary_ledger_id
14492    ,p_base_ledger_id           => p_base_ledger_id
14493    ,p_target_ledger_id         => p_target_ledger_id
14494    ,p_entity_id                => l_array_entity_id(hdr_idx)
14495    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
14496    ,p_entity_code              => l_array_entity_code(hdr_idx)
14497    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
14498    ,p_event_id                 => l_array_event_id(hdr_idx)
14499    ,p_event_class_code         => l_array_class_code(hdr_idx)
14500    ,p_event_type_code          => l_array_event_type(hdr_idx)
14501    ,p_event_number             => l_array_event_number(hdr_idx)
14502    ,p_event_date               => l_array_event_date(hdr_idx)
14503    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
14504    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
14505    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
14506    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
14507    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
14508    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
14509    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
14510    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
14511    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
14512    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
14513    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
14514    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
14515    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
14516    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
14517    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
14518 
14519 --
14520 -- set the status of entry to C_VALID (0)
14521 --
14522 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
14523 
14524 --
14525 -- initialize a row for ae header
14526 --
14527 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
14528 
14529 l_event_id := l_array_event_id(hdr_idx);
14530 
14531 --
14532 -- storing the hdr_idx for event. May be used by line cursor.
14533 --
14534 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
14535 
14536 --
14537 -- store sources from header extract. This can be improved to
14538 -- store only those sources from header extract that may be used in lines
14539 --
14540 
14541 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
14542 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
14543 g_array_event(l_event_id).array_value_char('source_11') := l_array_source_11(hdr_idx);
14544 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
14545 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
14546 g_array_event(l_event_id).array_value_char('source_20') := l_array_source_20(hdr_idx);
14547 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
14548 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
14549 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
14550 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
14551 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
14552 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
14553 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
14554 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
14555 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
14556 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
14557 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
14558 
14559 --
14560 -- initilaize the status of ae headers for diffrent balance types
14561 -- the status is initialised to C_NOT_CREATED (2)
14562 --
14563 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
14564 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
14565 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
14566 
14567 --
14568 -- call api to validate and store accounting attributes for header
14569 --
14570 
14571 ------------------------------------------------------------
14572 -- Accrual Reversal : to get date for Standard Source (NONE)
14573 ------------------------------------------------------------
14574 l_acc_rev_gl_date_source := NULL;
14575 
14576      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
14577       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_28');
14578      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
14579       l_rec_acct_attrs.array_date_value(2) := 
14580 xla_ae_sources_pkg.GetSystemSourceDate(
14581    p_source_code           => 'XLA_REFERENCE_DATE_1'
14582  , p_source_type_code      => 'Y'
14583  , p_source_application_id =>  602
14584 );
14585      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
14586       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_42');
14587 
14588 
14589 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
14590 
14591 XLA_AE_HEADER_PKG.SetJeCategoryName;
14592 
14593 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
14594 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
14595 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
14596 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
14597 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
14598 
14599 
14600 -- No header level analytical criteria
14601 
14602 --
14603 --accounting attribute enhancement, bug 3612931
14604 --
14605 l_trx_reversal_source := SUBSTR(NULL, 1,30);
14606 
14607 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
14608    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
14609 
14610    xla_accounting_err_pkg.build_message
14611       (p_appli_s_name            => 'XLA'
14612       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
14613       ,p_token_1                 => 'ACCT_ATTR_NAME'
14614       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
14615       ,p_token_2                 => 'PRODUCT_NAME'
14616       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
14617       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
14618       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
14619       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
14620 
14621 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
14622    --
14623    -- following sets the accounting attributes needed to reverse
14624    -- accounting for a distributeion
14625    --
14626    xla_ae_lines_pkg.SetTrxReversalAttrs
14627       (p_event_id              => l_event_id
14628       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
14629       ,p_trx_reversal_source   => l_trx_reversal_source);
14630 
14631 END IF;
14632 
14633 
14634 ----------------------------------------------------------------
14635 -- 4262811 -  update the header statuses to invalid in need be
14636 ----------------------------------------------------------------
14637 --
14638 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
14639 
14640 
14641   -----------------------------------------------
14642   -- No accrual reversal for the event class/type
14643   -----------------------------------------------
14644 ----------------------------------------------------------------
14645 
14646 --
14647 -- this ends the header loop iteration for one bulk fetch
14648 --
14649 END LOOP;
14650 
14651 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
14652 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
14653 
14654 --
14655 -- insert dummy rows into lines gt table that were created due to
14656 -- transaction reversals
14657 --
14658 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
14659    l_result := XLA_AE_LINES_PKG.InsertLines;
14660 END IF;
14661 
14662 --
14663 -- reset the temp_line_num for each set of events fetched from header
14664 -- cursor rather than doing it for each new event in line cursor
14665 -- Bug 3939231
14666 --
14667 xla_ae_lines_pkg.g_temp_line_num := 0;
14668 
14669 
14670 
14671 --
14672 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
14673 --
14674 --
14675 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14676 
14677       trace
14678          (p_msg      => 'SQL - FETCH line_cur'
14679          ,p_level    => C_LEVEL_STATEMENT
14680          ,p_module   => l_log_module);
14681 
14682 END IF;
14683 --
14684 --
14685 LOOP
14686   --
14687   FETCH line_cur BULK COLLECT INTO
14688         l_array_entity_id
14689       , l_array_legal_entity_id
14690       , l_array_entity_code
14691       , l_array_transaction_num
14692       , l_array_event_id
14693       , l_array_class_code
14694       , l_array_event_type
14695       , l_array_event_number
14696       , l_array_event_date
14697       , l_array_transaction_date
14698       , l_array_reference_num_1
14699       , l_array_reference_num_2
14700       , l_array_reference_num_3
14701       , l_array_reference_num_4
14702       , l_array_reference_char_1
14703       , l_array_reference_char_2
14704       , l_array_reference_char_3
14705       , l_array_reference_char_4
14706       , l_array_reference_date_1
14707       , l_array_reference_date_2
14708       , l_array_reference_date_3
14709       , l_array_reference_date_4
14710       , l_array_event_created_by
14711       , l_array_budgetary_control_flag
14712       , l_array_extract_line_num 
14713       , l_array_source_8
14714       , l_array_source_29
14715       LIMIT l_rows;
14716 
14717   --
14718   IF (C_LEVEL_EVENT >= g_log_level) THEN
14719             trace
14720                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
14721                ,p_level    => C_LEVEL_EVENT
14722                ,p_module   => l_log_module);
14723   END IF;
14724   --
14725   EXIT WHEN l_array_entity_id.count = 0;
14726 
14727   XLA_AE_LINES_PKG.g_rec_lines := null;
14728 
14729 --
14730 -- Bug 4458708
14731 --
14732 XLA_AE_LINES_PKG.g_LineNumber := 0;
14733 --
14734 --
14735 
14736 FOR Idx IN 1..l_array_event_id.count LOOP
14737    --
14738    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
14739    --
14740    l_event_id := l_array_event_id(idx);  -- 5648433
14741 
14742    --
14743    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
14744    --
14745 
14746    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
14747              (g_array_event(l_event_id).array_value_num('header_index'))
14748          ,'N'
14749          ) <> 'Y'
14750    THEN
14751       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14752          trace
14753             (p_msg      => 'Trancaction revesal option is not Y '
14754             ,p_level    => C_LEVEL_STATEMENT
14755             ,p_module   => l_log_module);
14756       END IF;
14757 
14758 --
14759 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
14760 --
14761 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
14762 --
14763 -- set event info as cache for other routines to refer event attributes
14764 --
14765 
14766 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
14767    l_previous_event_id := l_event_id;
14768 
14769    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
14770       (p_application_id           => p_application_id
14771       ,p_primary_ledger_id        => p_primary_ledger_id
14772       ,p_base_ledger_id           => p_base_ledger_id
14773       ,p_target_ledger_id         => p_target_ledger_id
14774       ,p_entity_id                => l_array_entity_id(Idx)
14775       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
14776       ,p_entity_code              => l_array_entity_code(Idx)
14777       ,p_transaction_num          => l_array_transaction_num(Idx)
14778       ,p_event_id                 => l_array_event_id(Idx)
14779       ,p_event_class_code         => l_array_class_code(Idx)
14780       ,p_event_type_code          => l_array_event_type(Idx)
14781       ,p_event_number             => l_array_event_number(Idx)
14782       ,p_event_date               => l_array_event_date(Idx)
14783       ,p_transaction_date         => l_array_transaction_date(Idx)
14784       ,p_reference_num_1          => l_array_reference_num_1(Idx)
14785       ,p_reference_num_2          => l_array_reference_num_2(Idx)
14786       ,p_reference_num_3          => l_array_reference_num_3(Idx)
14787       ,p_reference_num_4          => l_array_reference_num_4(Idx)
14788       ,p_reference_char_1         => l_array_reference_char_1(Idx)
14789       ,p_reference_char_2         => l_array_reference_char_2(Idx)
14790       ,p_reference_char_3         => l_array_reference_char_3(Idx)
14791       ,p_reference_char_4         => l_array_reference_char_4(Idx)
14792       ,p_reference_date_1         => l_array_reference_date_1(Idx)
14793       ,p_reference_date_2         => l_array_reference_date_2(Idx)
14794       ,p_reference_date_3         => l_array_reference_date_3(Idx)
14795       ,p_reference_date_4         => l_array_reference_date_4(Idx)
14796       ,p_event_created_by         => l_array_event_created_by(Idx)
14797       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
14798        --
14799 END IF;
14800 
14801 
14802 
14803 --
14804 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
14805 
14806 l_acct_reversal_source := SUBSTR(NULL, 1,30);
14807 
14808 IF l_continue_with_lines THEN
14809    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
14810       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
14811 
14812       xla_accounting_err_pkg.build_message
14813          (p_appli_s_name            => 'XLA'
14814          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
14815          ,p_token_1                 => 'LINE_NUMBER'
14816          ,p_value_1                 => l_array_extract_line_num(Idx)
14817          ,p_token_2                 => 'PRODUCT_NAME'
14818          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
14819          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
14820          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
14821          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
14822 
14823    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
14824       --
14825       -- following sets the accounting attributes needed to reverse
14826       -- accounting for a distributeion
14827       --
14828 
14829       --
14830       -- 5217187
14831       --
14832       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
14833       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
14834                                        g_array_event(l_event_id).array_value_num('header_index'));
14835       --
14836       --
14837 
14838       -- No reversal code generated
14839 
14840       xla_ae_lines_pkg.SetAcctReversalAttrs
14841          (p_event_id             => l_event_id
14842          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
14843          ,p_calculate_acctd_flag => l_calculate_acctd_flag
14844          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
14845    END IF;
14846 
14847    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
14848        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
14849 
14850 --
14851 AcctLineType_13 (
14852  p_application_id  => p_application_id
14853  ,p_event_id     => l_event_id
14854  ,p_calculate_acctd_flag => l_calculate_acctd_flag
14855  ,p_calculate_g_l_flag => l_calculate_g_l_flag
14856  ,p_actual_flag => l_actual_flag
14857  ,p_balance_type_code => l_balance_type_code
14858  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14859  
14860  , p_source_8 => l_array_source_8(Idx)
14861  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14862  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
14863  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
14864  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
14865  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
14866  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
14867  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
14868  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
14869  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
14870  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
14871  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
14872  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
14873  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
14874  , p_source_29 => l_array_source_29(Idx)
14875  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
14876  );
14877 If(l_balance_type_code = 'A') THEN
14878   l_actual_gain_loss_ref := l_gain_or_loss_ref;
14879 END IF;
14880 
14881 --
14882 
14883 
14884 --
14885 AcctLineType_14 (
14886  p_application_id  => p_application_id
14887  ,p_event_id     => l_event_id
14888  ,p_calculate_acctd_flag => l_calculate_acctd_flag
14889  ,p_calculate_g_l_flag => l_calculate_g_l_flag
14890  ,p_actual_flag => l_actual_flag
14891  ,p_balance_type_code => l_balance_type_code
14892  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
14893  
14894  , p_source_8 => l_array_source_8(Idx)
14895  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
14896  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
14897  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
14898  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
14899  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
14900  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
14901  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
14902  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
14903  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
14904  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
14905  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
14906  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
14907  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
14908  , p_source_29 => l_array_source_29(Idx)
14909  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
14910  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
14911  );
14912 If(l_balance_type_code = 'A') THEN
14913   l_actual_gain_loss_ref := l_gain_or_loss_ref;
14914 END IF;
14915 
14916 --
14917 
14918       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
14919       -- or secondary ledger that has different currency with primary
14920       -- or alc that is calculated by sla
14921       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
14922             (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'))
14923 
14924 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
14925 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
14926           AND (l_actual_flag = 'A')) THEN
14927         XLA_AE_LINES_PKG.CreateGainOrLossLines(
14928           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
14929          ,p_application_id   => p_application_id
14930          ,p_amb_context_code => 'DEFAULT'
14931          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
14932          ,p_event_class_code => C_EVENT_CLASS_CODE
14933          ,p_event_type_code  => C_EVENT_TYPE_CODE
14934          
14935          ,p_gain_ccid        => -1
14936          ,p_loss_ccid        => -1
14937 
14938          ,p_actual_flag      => l_actual_flag
14939          ,p_enc_flag         => null
14940          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
14941          ,p_enc_g_l_ref      => null
14942          );
14943       END IF;
14944    END IF;
14945 END IF;
14946 
14947    ELSE
14948       --
14949       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
14950       --
14951       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14952          trace
14953             (p_msg      => 'Trancaction revesal option is Y'
14954             ,p_level    => C_LEVEL_STATEMENT
14955             ,p_module   => l_log_module);
14956       END IF;
14957    END IF;
14958 
14959 END LOOP;
14960 l_result := XLA_AE_LINES_PKG.InsertLines ;
14961 end loop;
14962 close line_cur;
14963 
14964 
14965 --
14966 -- insert headers into xla_ae_headers_gt table
14967 --
14968 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
14969 
14970 -- insert into errors table here.
14971 
14972 END LOOP;
14973 
14974 --
14975 -- 4865292
14976 --
14977 -- Compare g_hdr_extract_count with event count in
14978 -- CreateHeadersAndLines.
14979 --
14980 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
14981 
14982 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
14983    trace (p_msg     => '# rows extracted from header extract objects '
14984                     || ' (running total): '
14985                     || g_hdr_extract_count
14986          ,p_level   => C_LEVEL_STATEMENT
14987          ,p_module  => l_log_module);
14988 END IF;
14989 
14990 CLOSE header_cur;
14991 --
14992 
14993 --
14994 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14995    trace
14996       (p_msg      => 'END of EventClass_27'
14997       ,p_level    => C_LEVEL_PROCEDURE
14998       ,p_module   => l_log_module);
14999 END IF;
15000 --
15001 RETURN l_result;
15002 EXCEPTION
15003 WHEN xla_exceptions_pkg.application_exception THEN
15004    
15005 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
15006 
15007    
15008 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
15009 
15010    RAISE;
15011 
15012 WHEN NO_DATA_FOUND THEN
15013 
15014 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
15015 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
15016 
15017 FOR header_record IN header_cur
15018 LOOP
15019     l_array_header_events(header_record.event_id) := header_record.event_id;
15020 END LOOP;
15021 
15022 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
15023 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
15024 
15025 fnd_file.put_line(fnd_file.LOG, '                    ');
15026 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
15027 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
15028 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
15029 
15030 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
15031 LOOP
15032 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
15033 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
15034         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
15035 	END IF;
15036 END LOOP;
15037 
15038 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
15039 fnd_file.put_line(fnd_file.LOG, '                    ');
15040 
15041 
15042 xla_exceptions_pkg.raise_message
15043       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventClass_27');
15044 
15045 
15046 WHEN OTHERS THEN
15047    xla_exceptions_pkg.raise_message
15048       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventClass_27');
15049 END EventClass_27;
15050 --
15051 
15052 ---------------------------------------
15053 --
15054 -- PRIVATE PROCEDURE
15055 --         insert_sources_28
15056 --
15057 ----------------------------------------
15058 --
15059 PROCEDURE insert_sources_28(
15060                                 p_target_ledger_id       IN NUMBER
15061                               , p_language               IN VARCHAR2
15062                               , p_sla_ledger_id          IN NUMBER
15063                               , p_pad_start_date         IN DATE
15064                               , p_pad_end_date           IN DATE
15065                          )
15066 IS
15067 
15068 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT_ALL';
15069 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
15070 p_apps_owner                   VARCHAR2(30);
15071 l_log_module                   VARCHAR2(240);
15072 BEGIN
15073 IF g_log_enabled THEN
15074       l_log_module := C_DEFAULT_MODULE||'.insert_sources_28';
15075 END IF;
15076 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15077 
15078       trace
15079          (p_msg      => 'BEGIN of insert_sources_28'
15080          ,p_level    => C_LEVEL_PROCEDURE
15081          ,p_module   => l_log_module);
15082 
15083 END IF;
15084 
15085 -- select APPS owner
15086 SELECT oracle_username
15087   INTO p_apps_owner
15088   FROM fnd_oracle_userid
15089  WHERE read_only_flag = 'U'
15090 ;
15091 
15092 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15093       trace
15094          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
15095                         ' - p_language = '||p_language||
15096                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
15097                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
15098                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
15099                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
15100          ,p_level    => C_LEVEL_STATEMENT
15101          ,p_module   => l_log_module);
15102 END IF;
15103 
15104 
15105 --
15106 INSERT INTO xla_diag_sources --hdr2
15107 (
15108         event_id
15109       , ledger_id
15110       , sla_ledger_id
15111       , description_language
15112       , object_name
15113       , object_type_code
15114       , line_number
15115       , source_application_id
15116       , source_type_code
15117       , source_code
15118       , source_value
15119       , source_meaning
15120       , created_by
15121       , creation_date
15122       , last_update_date
15123       , last_updated_by
15124       , last_update_login
15125       , program_update_date
15126       , program_application_id
15127       , program_id
15128       , request_id
15129 )
15130 SELECT
15131         event_id
15132       , p_target_ledger_id
15133       , p_sla_ledger_id
15134       , p_language
15135       , object_name
15136       , object_type_code
15137       , line_number
15138       , source_application_id
15139       , source_type_code
15140       , source_code
15141       , SUBSTR(source_value ,1,1996)
15142       , SUBSTR(source_meaning ,1,200)
15143       , xla_environment_pkg.g_Usr_Id
15144       , TRUNC(SYSDATE)
15145       , TRUNC(SYSDATE)
15146       , xla_environment_pkg.g_Usr_Id
15147       , xla_environment_pkg.g_Login_Id
15148       , TRUNC(SYSDATE)
15149       , xla_environment_pkg.g_Prog_Appl_Id
15150       , xla_environment_pkg.g_Prog_Id
15151       , xla_environment_pkg.g_Req_Id
15152   FROM (
15153        SELECT xet.event_id                  event_id
15154             , 0                          line_number
15155             , CASE r
15156                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
15157                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
15158                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
15159                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
15160                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
15161                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
15162                 WHEN 7 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
15163                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
15164                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
15165                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
15166                 WHEN 11 THEN 'PSA_CST_XLA_UPG_V' 
15167                 WHEN 12 THEN 'PO_REQ_HEADERS_REF_V' 
15168                 WHEN 13 THEN 'PO_REQ_DISTS_REF_V' 
15169                 WHEN 14 THEN 'CST_XLA_INV_REF_V' 
15170                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
15171                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
15172                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
15173                 WHEN 18 THEN 'PO_REQ_DISTS_REF_V' 
15174                 WHEN 19 THEN 'PO_REQ_HEADERS_REF_V' 
15175                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
15176                 
15177                ELSE null
15178               END                           object_name
15179             , CASE r
15180                 WHEN 1 THEN 'HEADER' 
15181                 WHEN 2 THEN 'HEADER' 
15182                 WHEN 3 THEN 'HEADER' 
15183                 WHEN 4 THEN 'HEADER' 
15184                 WHEN 5 THEN 'HEADER' 
15185                 WHEN 6 THEN 'HEADER' 
15186                 WHEN 7 THEN 'HEADER' 
15187                 WHEN 8 THEN 'HEADER' 
15188                 WHEN 9 THEN 'HEADER' 
15189                 WHEN 10 THEN 'HEADER' 
15190                 WHEN 11 THEN 'HEADER' 
15191                 WHEN 12 THEN 'HEADER' 
15192                 WHEN 13 THEN 'HEADER' 
15193                 WHEN 14 THEN 'HEADER' 
15194                 WHEN 15 THEN 'HEADER' 
15195                 WHEN 16 THEN 'HEADER' 
15196                 WHEN 17 THEN 'HEADER' 
15197                 WHEN 18 THEN 'HEADER' 
15198                 WHEN 19 THEN 'HEADER' 
15199                 WHEN 20 THEN 'HEADER' 
15200                 
15201                 ELSE null
15202               END                           object_type_code
15203             , CASE r
15204                 WHEN 1 THEN '707' 
15205                 WHEN 2 THEN '707' 
15206                 WHEN 3 THEN '707' 
15207                 WHEN 4 THEN '707' 
15208                 WHEN 5 THEN '707' 
15209                 WHEN 6 THEN '707' 
15210                 WHEN 7 THEN '707' 
15211                 WHEN 8 THEN '707' 
15212                 WHEN 9 THEN '707' 
15213                 WHEN 10 THEN '707' 
15214                 WHEN 11 THEN '707' 
15215                 WHEN 12 THEN '201' 
15216                 WHEN 13 THEN '201' 
15217                 WHEN 14 THEN '707' 
15218                 WHEN 15 THEN '707' 
15219                 WHEN 16 THEN '707' 
15220                 WHEN 17 THEN '707' 
15221                 WHEN 18 THEN '201' 
15222                 WHEN 19 THEN '201' 
15223                 WHEN 20 THEN '707' 
15224                 
15225                 ELSE null
15226               END                           source_application_id
15227             , 'S'             source_type_code
15228             , CASE r
15229                 WHEN 1 THEN 'TRANSACTION_ID' 
15230                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
15231                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
15232                 WHEN 4 THEN 'TRANSACTION_UOM' 
15233                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
15234                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
15235                 WHEN 7 THEN 'ENCUMBRANCE_REVERSAL_FLAG' 
15236                 WHEN 8 THEN 'APPLIED_TO_APPL_ID' 
15237                 WHEN 9 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
15238                 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
15239                 WHEN 11 THEN 'CST_ENCUM_UPG_OPTION' 
15240                 WHEN 12 THEN 'REQ_ENCUMBRANCE_FLAG' 
15241                 WHEN 13 THEN 'REQ_RESERVED_FLAG' 
15242                 WHEN 14 THEN 'BUS_FLOW_REQ_DIST_TYPE' 
15243                 WHEN 15 THEN 'BUS_FLOW_REQ_ENTITY_CODE' 
15244                 WHEN 16 THEN 'BUS_FLOW_REQ_DIST_ID' 
15245                 WHEN 17 THEN 'BUS_FLOW_REQ_ID' 
15246                 WHEN 18 THEN 'REQ_BUDGET_ACCOUNT' 
15247                 WHEN 19 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
15248                 WHEN 20 THEN 'TRANSFER_TO_GL_INDICATOR' 
15249                 
15250                 ELSE null
15251               END                           source_code
15252             , CASE r
15253                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
15254                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
15255                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
15256                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
15257                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
15258                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
15259                 WHEN 7 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_FLAG)
15260                 WHEN 8 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
15261                 WHEN 9 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
15262                 WHEN 10 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
15263                 WHEN 11 THEN TO_CHAR(h9.CST_ENCUM_UPG_OPTION)
15264                 WHEN 12 THEN TO_CHAR(h8.REQ_ENCUMBRANCE_FLAG)
15265                 WHEN 13 THEN TO_CHAR(h7.REQ_RESERVED_FLAG)
15266                 WHEN 14 THEN TO_CHAR(h4.BUS_FLOW_REQ_DIST_TYPE)
15267                 WHEN 15 THEN TO_CHAR(h4.BUS_FLOW_REQ_ENTITY_CODE)
15268                 WHEN 16 THEN TO_CHAR(h4.BUS_FLOW_REQ_DIST_ID)
15269                 WHEN 17 THEN TO_CHAR(h4.BUS_FLOW_REQ_ID)
15270                 WHEN 18 THEN TO_CHAR(h7.REQ_BUDGET_ACCOUNT)
15271                 WHEN 19 THEN TO_CHAR(h8.REQ_ENCUMBRANCE_TYPE_ID)
15272                 WHEN 20 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
15273                 
15274                 ELSE null
15275               END                           source_value
15276             , CASE r
15277                 WHEN 6 THEN fvl9.meaning
15278                 WHEN 20 THEN fvl42.meaning
15279                 
15280                 ELSE null
15281               END               source_meaning
15282          FROM xla_events_gt     xet  
15283       , CST_XLA_INV_HEADERS_V  h1
15284       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
15285       , CST_XLA_INV_REF_V  h4
15286       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
15287       , CST_XLA_INV_TXN_TYPES_REF_V  h6
15288       , PO_REQ_DISTS_REF_V  h7
15289       , PO_REQ_HEADERS_REF_V  h8
15290       , PSA_CST_XLA_UPG_V  h9
15291   , fnd_lookup_values    fvl9
15292   , fnd_lookup_values    fvl42
15293              ,(select rownum r from all_objects where rownum <= 20 and owner = p_apps_owner)
15294          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
15295            AND xet.event_class_code = C_EVENT_CLASS_CODE
15296               AND h1.event_id = xet.event_id
15297  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id = h1.inventory_item_id and h5.organization_id = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h4.bus_flow_req_dist_id=h7.req_distribution_id (+)  AND h4.bus_flow_req_id = h8.req_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
15298   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
15299   AND fvl9.view_application_id(+) = 700
15300   AND fvl9.language(+)            = USERENV('LANG')
15301      AND fvl42.lookup_type(+)         = 'YES_NO'
15302   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
15303   AND fvl42.view_application_id(+) = 0
15304   AND fvl42.language(+)            = USERENV('LANG')
15305   
15306 )
15307 ;
15308 --
15309 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15310 
15311       trace
15312          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
15313          ,p_level    => C_LEVEL_STATEMENT
15314          ,p_module   => l_log_module);
15315 
15316 END IF;
15317 --
15318 
15319 
15320 
15321 --
15322 INSERT INTO xla_diag_sources  --line2
15323 (
15324         event_id
15325       , ledger_id
15326       , sla_ledger_id
15327       , description_language
15328       , object_name
15329       , object_type_code
15330       , line_number
15331       , source_application_id
15332       , source_type_code
15333       , source_code
15334       , source_value
15335       , source_meaning
15336       , created_by
15337       , creation_date
15338       , last_update_date
15339       , last_updated_by
15340       , last_update_login
15341       , program_update_date
15342       , program_application_id
15343       , program_id
15344       , request_id
15345 )
15346 SELECT  event_id
15347       , p_target_ledger_id
15348       , p_sla_ledger_id
15349       , p_language
15350       , object_name
15351       , object_type_code
15352       , line_number
15353       , source_application_id
15354       , source_type_code
15355       , source_code
15356       , SUBSTR(source_value,1,1996)
15357       , SUBSTR(source_meaning ,1,200)
15358       , xla_environment_pkg.g_Usr_Id
15359       , TRUNC(SYSDATE)
15360       , TRUNC(SYSDATE)
15361       , xla_environment_pkg.g_Usr_Id
15362       , xla_environment_pkg.g_Login_Id
15363       , TRUNC(SYSDATE)
15364       , xla_environment_pkg.g_Prog_Appl_Id
15365       , xla_environment_pkg.g_Prog_Id
15366       , xla_environment_pkg.g_Req_Id
15367   FROM (
15368        SELECT xet.event_id                  event_id
15369             , l2.line_number                 line_number
15370             , CASE r
15371                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
15372                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
15373                 
15374                ELSE null
15375               END                           object_name
15376             , CASE r
15377                 WHEN 1 THEN 'LINE' 
15378                 WHEN 2 THEN 'LINE' 
15379                 
15380                 ELSE null
15381               END                           object_type_code
15382             , CASE r
15383                 WHEN 1 THEN '707' 
15384                 WHEN 2 THEN '707' 
15385                 
15386                 ELSE null
15387               END                           source_application_id
15388             , 'S'             source_type_code
15389             , CASE r
15390                 WHEN 1 THEN 'DISTRIBUTION_IDENTIFIER' 
15391                 WHEN 2 THEN 'CURRENCY_CODE' 
15392                 
15393                 ELSE null
15394               END                           source_code
15395             , CASE r
15396                 WHEN 1 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
15397                 WHEN 2 THEN TO_CHAR(l2.CURRENCY_CODE)
15398                 
15399                 ELSE null
15400               END                           source_value
15401             , null              source_meaning
15402          FROM  xla_events_gt     xet  
15403         , CST_XLA_INV_LINES_V  l2
15404             , (select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
15405         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
15406           AND xet.event_class_code = C_EVENT_CLASS_CODE
15407             AND l2.event_id          = xet.event_id
15408 
15409 )
15410 ;
15411 --
15412 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15413 
15414       trace
15415          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
15416          ,p_level    => C_LEVEL_STATEMENT
15417          ,p_module   => l_log_module);
15418 
15419 END IF;
15420 
15421 
15422 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15423       trace
15424          (p_msg      => 'END of insert_sources_28'
15425          ,p_level    => C_LEVEL_PROCEDURE
15426          ,p_module   => l_log_module);
15427 END IF;
15428 EXCEPTION
15429   WHEN xla_exceptions_pkg.application_exception THEN
15430       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
15431             trace
15432                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
15433                ,p_level    => C_LEVEL_EXCEPTION
15434                ,p_module   => l_log_module);
15435       END IF;
15436       RAISE;
15437   WHEN OTHERS THEN
15438       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
15439             trace
15440                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
15441                ,p_level    => C_LEVEL_EXCEPTION
15442                ,p_module   => l_log_module);
15443        END IF;
15444        xla_exceptions_pkg.raise_message
15445            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_28');
15446 END insert_sources_28;
15447 --
15448 
15449 ---------------------------------------
15450 --
15451 -- PRIVATE FUNCTION
15452 --         EventClass_28
15453 --
15454 ----------------------------------------
15455 --
15456 FUNCTION EventClass_28
15457        (p_application_id         IN NUMBER
15458        ,p_base_ledger_id         IN NUMBER
15459        ,p_target_ledger_id       IN NUMBER
15460        ,p_language               IN VARCHAR2
15461        ,p_currency_code          IN VARCHAR2
15462        ,p_sla_ledger_id          IN NUMBER
15463        ,p_pad_start_date         IN DATE
15464        ,p_pad_end_date           IN DATE
15465        ,p_primary_ledger_id      IN NUMBER)
15466 RETURN BOOLEAN IS
15467 --
15468 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DIR_INTERORG_RCPT_ALL';
15469 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DIR_INTERORG_RCPT';
15470 
15471 l_calculate_acctd_flag   VARCHAR2(1) :='N';
15472 l_calculate_g_l_flag     VARCHAR2(1) :='N';
15473 --
15474 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15475 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15476 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
15477 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15478 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15479 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
15480 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
15481 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15482 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15483 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15484 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15485 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15486 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15487 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
15488 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15489 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15490 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15491 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
15492 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15493 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15494 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15495 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
15496 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
15497 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
15498 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
15499 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
15500 
15501 l_event_id                             NUMBER;
15502 l_previous_event_id                    NUMBER;
15503 l_first_event_id                       NUMBER;
15504 l_last_event_id                        NUMBER;
15505 
15506 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
15507 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
15508 --
15509 --
15510 l_result                    BOOLEAN := TRUE;
15511 l_rows                      NUMBER  := 1000;
15512 l_event_type_name           VARCHAR2(80) := 'All';
15513 l_event_class_name          VARCHAR2(80) := 'Direct Interorg Receipt';
15514 l_description               VARCHAR2(4000);
15515 l_transaction_reversal      NUMBER;
15516 l_ae_header_id              NUMBER;
15517 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
15518 l_log_module                VARCHAR2(240);
15519 --
15520 l_acct_reversal_source      VARCHAR2(30);
15521 l_trx_reversal_source       VARCHAR2(30);
15522 
15523 l_continue_with_lines       BOOLEAN := TRUE;
15524 --
15525 l_acc_rev_gl_date_source    DATE;                      -- 4262811
15526 --
15527 type t_array_event_id is table of number index by binary_integer;
15528 
15529 l_rec_array_event                    t_rec_array_event;
15530 l_null_rec_array_event               t_rec_array_event;
15531 l_array_ae_header_id                 xla_number_array_type;
15532 l_actual_flag                        VARCHAR2(1) := NULL;
15533 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
15534 l_balance_type_code                  VARCHAR2(1) :=NULL;
15535 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
15536 
15537 --
15538 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
15539 --
15540 
15541 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
15542 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
15543 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
15544 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
15545 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
15546 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
15547 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.ENCUMBRANCE_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
15548 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
15549 TYPE t_array_source_25 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
15550 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
15551 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
15552 TYPE t_array_source_33 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
15553 TYPE t_array_source_34 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
15554 TYPE t_array_source_35 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
15555 TYPE t_array_source_36 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
15556 TYPE t_array_source_37 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
15557 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_ID%TYPE INDEX BY BINARY_INTEGER;
15558 TYPE t_array_source_39 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
15559 TYPE t_array_source_40 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
15560 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
15561 
15562 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
15563 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
15564 
15565 l_array_source_1              t_array_source_1;
15566 l_array_source_2              t_array_source_2;
15567 l_array_source_3              t_array_source_3;
15568 l_array_source_4              t_array_source_4;
15569 l_array_source_5              t_array_source_5;
15570 l_array_source_9              t_array_source_9;
15571 l_array_source_9_meaning      t_array_lookup_meaning;
15572 l_array_source_17              t_array_source_17;
15573 l_array_source_19              t_array_source_19;
15574 l_array_source_25              t_array_source_25;
15575 l_array_source_26              t_array_source_26;
15576 l_array_source_27              t_array_source_27;
15577 l_array_source_33              t_array_source_33;
15578 l_array_source_34              t_array_source_34;
15579 l_array_source_35              t_array_source_35;
15580 l_array_source_36              t_array_source_36;
15581 l_array_source_37              t_array_source_37;
15582 l_array_source_38              t_array_source_38;
15583 l_array_source_39              t_array_source_39;
15584 l_array_source_40              t_array_source_40;
15585 l_array_source_42              t_array_source_42;
15586 l_array_source_42_meaning      t_array_lookup_meaning;
15587 
15588 l_array_source_8      t_array_source_8;
15589 l_array_source_11      t_array_source_11;
15590 
15591 --
15592 CURSOR header_cur
15593 IS
15594 SELECT /*+ leading(xet) cardinality(xet,1) */
15595 -- Event Class Code: DIR_INTERORG_RCPT
15596     xet.entity_id
15597    ,xet.legal_entity_id
15598    ,xet.entity_code
15599    ,xet.transaction_number
15600    ,xet.event_id
15601    ,xet.event_class_code
15602    ,xet.event_type_code
15603    ,xet.event_number
15604    ,xet.event_date
15605    ,xet.transaction_date
15606    ,xet.reference_num_1
15607    ,xet.reference_num_2
15608    ,xet.reference_num_3
15609    ,xet.reference_num_4
15610    ,xet.reference_char_1
15611    ,xet.reference_char_2
15612    ,xet.reference_char_3
15613    ,xet.reference_char_4
15614    ,xet.reference_date_1
15615    ,xet.reference_date_2
15616    ,xet.reference_date_3
15617    ,xet.reference_date_4
15618    ,xet.event_created_by
15619    ,xet.budgetary_control_flag 
15620   , h1.TRANSACTION_ID    source_1
15621   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
15622   , h4.TRANSACTION_QUANTITY    source_3
15623   , h4.TRANSACTION_UOM    source_4
15624   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
15625   , h1.DISTRIBUTION_TYPE    source_9
15626   , fvl9.meaning   source_9_meaning
15627   , h3.ENCUMBRANCE_REVERSAL_FLAG    source_17
15628   , h4.APPLIED_TO_APPL_ID    source_19
15629   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_25
15630   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_26
15631   , h9.CST_ENCUM_UPG_OPTION    source_27
15632   , h8.REQ_ENCUMBRANCE_FLAG    source_33
15633   , h7.REQ_RESERVED_FLAG    source_34
15634   , h4.BUS_FLOW_REQ_DIST_TYPE    source_35
15635   , h4.BUS_FLOW_REQ_ENTITY_CODE    source_36
15636   , h4.BUS_FLOW_REQ_DIST_ID    source_37
15637   , h4.BUS_FLOW_REQ_ID    source_38
15638   , h7.REQ_BUDGET_ACCOUNT    source_39
15639   , h8.REQ_ENCUMBRANCE_TYPE_ID    source_40
15640   , h1.TRANSFER_TO_GL_INDICATOR    source_42
15641   , fvl42.meaning   source_42_meaning
15642   FROM xla_events_gt     xet 
15643   , CST_XLA_INV_HEADERS_V  h1
15644   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
15645   , CST_XLA_INV_REF_V  h4
15646   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
15647   , CST_XLA_INV_TXN_TYPES_REF_V  h6
15648   , PO_REQ_DISTS_REF_V  h7
15649   , PO_REQ_HEADERS_REF_V  h8
15650   , PSA_CST_XLA_UPG_V  h9
15651   , fnd_lookup_values    fvl9
15652   , fnd_lookup_values    fvl42
15653  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
15654    and xet.event_class_code = C_EVENT_CLASS_CODE
15655    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
15656  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h4.BUS_FLOW_REQ_DIST_ID=h7.REQ_DISTRIBUTION_ID (+)  AND h4.BUS_FLOW_REQ_ID = h8.REQ_ID (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
15657   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
15658   AND fvl9.view_application_id(+) = 700
15659   AND fvl9.language(+)            = USERENV('LANG')
15660      AND fvl42.lookup_type(+)         = 'YES_NO'
15661   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
15662   AND fvl42.view_application_id(+) = 0
15663   AND fvl42.language(+)            = USERENV('LANG')
15664   
15665  ORDER BY event_id
15666 ;
15667 
15668 
15669 --
15670 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
15671 IS
15672 SELECT  /*+ leading(xet) cardinality(xet,1) */
15673 -- Event Class Code: DIR_INTERORG_RCPT
15674     xet.entity_id
15675    ,xet.legal_entity_id
15676    ,xet.entity_code
15677    ,xet.transaction_number
15678    ,xet.event_id
15679    ,xet.event_class_code
15680    ,xet.event_type_code
15681    ,xet.event_number
15682    ,xet.event_date
15683    ,xet.transaction_date
15684    ,xet.reference_num_1
15685    ,xet.reference_num_2
15686    ,xet.reference_num_3
15687    ,xet.reference_num_4
15688    ,xet.reference_char_1
15689    ,xet.reference_char_2
15690    ,xet.reference_char_3
15691    ,xet.reference_char_4
15692    ,xet.reference_date_1
15693    ,xet.reference_date_2
15694    ,xet.reference_date_3
15695    ,xet.reference_date_4
15696    ,xet.event_created_by
15697    ,xet.budgetary_control_flag
15698  , l2.LINE_NUMBER  
15699   , l2.DISTRIBUTION_IDENTIFIER    source_8
15700   , l2.CURRENCY_CODE    source_11
15701   FROM xla_events_gt     xet 
15702   , CST_XLA_INV_LINES_V  l2
15703  WHERE xet.event_id between x_first_event_id and x_last_event_id
15704    and xet.event_date between p_pad_start_date and p_pad_end_date
15705    and xet.event_class_code = C_EVENT_CLASS_CODE
15706    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
15707 ;
15708 
15709 --
15710 BEGIN
15711 IF g_log_enabled THEN
15712    l_log_module := C_DEFAULT_MODULE||'.EventClass_28';
15713 END IF;
15714 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15715    trace
15716       (p_msg      => 'BEGIN of EventClass_28'
15717       ,p_level    => C_LEVEL_PROCEDURE
15718       ,p_module   => l_log_module);
15719 END IF;
15720 
15721 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15722    trace
15723       (p_msg      => 'p_application_id = '||p_application_id||
15724                      ' - p_base_ledger_id = '||p_base_ledger_id||
15725                      ' - p_target_ledger_id  = '||p_target_ledger_id||
15726                      ' - p_language = '||p_language||
15727                      ' - p_currency_code = '||p_currency_code||
15728                      ' - p_sla_ledger_id = '||p_sla_ledger_id
15729       ,p_level    => C_LEVEL_STATEMENT
15730       ,p_module   => l_log_module);
15731 END IF;
15732 --
15733 -- initialze arrays
15734 --
15735 g_array_event.DELETE;
15736 l_rec_array_event := l_null_rec_array_event;
15737 --
15738 --------------------------------------
15739 -- 4262811 Initialze MPA Line Number
15740 --------------------------------------
15741 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
15742 
15743 --
15744 
15745 --
15746 OPEN header_cur;
15747 --
15748 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
15749    trace
15750    (p_msg      => 'SQL - FETCH header_cur'
15751    ,p_level    => C_LEVEL_STATEMENT
15752    ,p_module   => l_log_module);
15753 END IF;
15754 --
15755 LOOP
15756 FETCH header_cur BULK COLLECT INTO
15757         l_array_entity_id
15758       , l_array_legal_entity_id
15759       , l_array_entity_code
15760       , l_array_transaction_num
15761       , l_array_event_id
15762       , l_array_class_code
15763       , l_array_event_type
15764       , l_array_event_number
15765       , l_array_event_date
15766       , l_array_transaction_date
15767       , l_array_reference_num_1
15768       , l_array_reference_num_2
15769       , l_array_reference_num_3
15770       , l_array_reference_num_4
15771       , l_array_reference_char_1
15772       , l_array_reference_char_2
15773       , l_array_reference_char_3
15774       , l_array_reference_char_4
15775       , l_array_reference_date_1
15776       , l_array_reference_date_2
15777       , l_array_reference_date_3
15778       , l_array_reference_date_4
15779       , l_array_event_created_by
15780       , l_array_budgetary_control_flag 
15781       , l_array_source_1
15782       , l_array_source_2
15783       , l_array_source_3
15784       , l_array_source_4
15785       , l_array_source_5
15786       , l_array_source_9
15787       , l_array_source_9_meaning
15788       , l_array_source_17
15789       , l_array_source_19
15790       , l_array_source_25
15791       , l_array_source_26
15792       , l_array_source_27
15793       , l_array_source_33
15794       , l_array_source_34
15795       , l_array_source_35
15796       , l_array_source_36
15797       , l_array_source_37
15798       , l_array_source_38
15799       , l_array_source_39
15800       , l_array_source_40
15801       , l_array_source_42
15802       , l_array_source_42_meaning
15803       LIMIT l_rows;
15804 --
15805 IF (C_LEVEL_EVENT >= g_log_level) THEN
15806    trace
15807    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
15808    ,p_level    => C_LEVEL_EVENT
15809    ,p_module   => l_log_module);
15810 END IF;
15811 --
15812 EXIT WHEN l_array_entity_id.COUNT = 0;
15813 
15814 -- initialize arrays
15815 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
15816 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
15817 
15818 --
15819 -- Bug 4458708
15820 --
15821 XLA_AE_LINES_PKG.g_LineNumber := 0;
15822 
15823 
15824 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
15825 g_last_hdr_idx := l_array_event_id.LAST;
15826 --
15827 -- loop for the headers. Each iteration is for each header extract row
15828 -- fetched in header cursor
15829 --
15830 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
15831 
15832 --
15833 -- set event info as cache for other routines to refer event attributes
15834 --
15835 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
15836    (p_application_id           => p_application_id
15837    ,p_primary_ledger_id        => p_primary_ledger_id
15838    ,p_base_ledger_id           => p_base_ledger_id
15839    ,p_target_ledger_id         => p_target_ledger_id
15840    ,p_entity_id                => l_array_entity_id(hdr_idx)
15841    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
15842    ,p_entity_code              => l_array_entity_code(hdr_idx)
15843    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
15844    ,p_event_id                 => l_array_event_id(hdr_idx)
15845    ,p_event_class_code         => l_array_class_code(hdr_idx)
15846    ,p_event_type_code          => l_array_event_type(hdr_idx)
15847    ,p_event_number             => l_array_event_number(hdr_idx)
15848    ,p_event_date               => l_array_event_date(hdr_idx)
15849    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
15850    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
15851    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
15852    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
15853    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
15854    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
15855    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
15856    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
15857    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
15858    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
15859    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
15860    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
15861    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
15862    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
15863    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
15864 
15865 --
15866 -- set the status of entry to C_VALID (0)
15867 --
15868 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
15869 
15870 --
15871 -- initialize a row for ae header
15872 --
15873 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
15874 
15875 l_event_id := l_array_event_id(hdr_idx);
15876 
15877 --
15878 -- storing the hdr_idx for event. May be used by line cursor.
15879 --
15880 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
15881 
15882 --
15883 -- store sources from header extract. This can be improved to
15884 -- store only those sources from header extract that may be used in lines
15885 --
15886 
15887 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
15888 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
15889 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
15890 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
15891 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
15892 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
15893 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
15894 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
15895 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
15896 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
15897 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
15898 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
15899 g_array_event(l_event_id).array_value_char('source_33') := l_array_source_33(hdr_idx);
15900 g_array_event(l_event_id).array_value_char('source_34') := l_array_source_34(hdr_idx);
15901 g_array_event(l_event_id).array_value_char('source_35') := l_array_source_35(hdr_idx);
15902 g_array_event(l_event_id).array_value_char('source_36') := l_array_source_36(hdr_idx);
15903 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
15904 g_array_event(l_event_id).array_value_num('source_38') := l_array_source_38(hdr_idx);
15905 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
15906 g_array_event(l_event_id).array_value_num('source_40') := l_array_source_40(hdr_idx);
15907 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
15908 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
15909 
15910 --
15911 -- initilaize the status of ae headers for diffrent balance types
15912 -- the status is initialised to C_NOT_CREATED (2)
15913 --
15914 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
15915 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
15916 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
15917 
15918 --
15919 -- call api to validate and store accounting attributes for header
15920 --
15921 
15922 ------------------------------------------------------------
15923 -- Accrual Reversal : to get date for Standard Source (NONE)
15924 ------------------------------------------------------------
15925 l_acc_rev_gl_date_source := NULL;
15926 
15927      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
15928       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_40');
15929      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
15930       l_rec_acct_attrs.array_date_value(2) := 
15931 xla_ae_sources_pkg.GetSystemSourceDate(
15932    p_source_code           => 'XLA_REFERENCE_DATE_1'
15933  , p_source_type_code      => 'Y'
15934  , p_source_application_id =>  602
15935 );
15936      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
15937       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_42');
15938 
15939 
15940 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
15941 
15942 XLA_AE_HEADER_PKG.SetJeCategoryName;
15943 
15944 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
15945 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
15946 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
15947 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
15948 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
15949 
15950 
15951 --
15952 xla_ae_header_pkg.SetHdrDescription(
15953    p_description => Description_1 (
15954    p_application_id => p_application_id 
15955  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
15956  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
15957  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
15958  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
15959  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
15960    )
15961 );
15962 --
15963 
15964 -- No header level analytical criteria
15965 
15966 --
15967 --accounting attribute enhancement, bug 3612931
15968 --
15969 l_trx_reversal_source := SUBSTR(NULL, 1,30);
15970 
15971 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
15972    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
15973 
15974    xla_accounting_err_pkg.build_message
15975       (p_appli_s_name            => 'XLA'
15976       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
15977       ,p_token_1                 => 'ACCT_ATTR_NAME'
15978       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
15979       ,p_token_2                 => 'PRODUCT_NAME'
15980       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
15981       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
15982       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
15983       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
15984 
15985 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
15986    --
15987    -- following sets the accounting attributes needed to reverse
15988    -- accounting for a distributeion
15989    --
15990    xla_ae_lines_pkg.SetTrxReversalAttrs
15991       (p_event_id              => l_event_id
15992       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
15993       ,p_trx_reversal_source   => l_trx_reversal_source);
15994 
15995 END IF;
15996 
15997 
15998 ----------------------------------------------------------------
15999 -- 4262811 -  update the header statuses to invalid in need be
16000 ----------------------------------------------------------------
16001 --
16002 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
16003 
16004 
16005   -----------------------------------------------
16006   -- No accrual reversal for the event class/type
16007   -----------------------------------------------
16008 ----------------------------------------------------------------
16009 
16010 --
16011 -- this ends the header loop iteration for one bulk fetch
16012 --
16013 END LOOP;
16014 
16015 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
16016 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
16017 
16018 --
16019 -- insert dummy rows into lines gt table that were created due to
16020 -- transaction reversals
16021 --
16022 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
16023    l_result := XLA_AE_LINES_PKG.InsertLines;
16024 END IF;
16025 
16026 --
16027 -- reset the temp_line_num for each set of events fetched from header
16028 -- cursor rather than doing it for each new event in line cursor
16029 -- Bug 3939231
16030 --
16031 xla_ae_lines_pkg.g_temp_line_num := 0;
16032 
16033 
16034 
16035 --
16036 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
16037 --
16038 --
16039 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16040 
16041       trace
16042          (p_msg      => 'SQL - FETCH line_cur'
16043          ,p_level    => C_LEVEL_STATEMENT
16044          ,p_module   => l_log_module);
16045 
16046 END IF;
16047 --
16048 --
16049 LOOP
16050   --
16051   FETCH line_cur BULK COLLECT INTO
16052         l_array_entity_id
16053       , l_array_legal_entity_id
16054       , l_array_entity_code
16055       , l_array_transaction_num
16056       , l_array_event_id
16057       , l_array_class_code
16058       , l_array_event_type
16059       , l_array_event_number
16060       , l_array_event_date
16061       , l_array_transaction_date
16062       , l_array_reference_num_1
16063       , l_array_reference_num_2
16064       , l_array_reference_num_3
16065       , l_array_reference_num_4
16066       , l_array_reference_char_1
16067       , l_array_reference_char_2
16068       , l_array_reference_char_3
16069       , l_array_reference_char_4
16070       , l_array_reference_date_1
16071       , l_array_reference_date_2
16072       , l_array_reference_date_3
16073       , l_array_reference_date_4
16074       , l_array_event_created_by
16075       , l_array_budgetary_control_flag
16076       , l_array_extract_line_num 
16077       , l_array_source_8
16078       , l_array_source_11
16079       LIMIT l_rows;
16080 
16081   --
16082   IF (C_LEVEL_EVENT >= g_log_level) THEN
16083             trace
16084                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
16085                ,p_level    => C_LEVEL_EVENT
16086                ,p_module   => l_log_module);
16087   END IF;
16088   --
16089   EXIT WHEN l_array_entity_id.count = 0;
16090 
16091   XLA_AE_LINES_PKG.g_rec_lines := null;
16092 
16093 --
16094 -- Bug 4458708
16095 --
16096 XLA_AE_LINES_PKG.g_LineNumber := 0;
16097 --
16098 --
16099 
16100 FOR Idx IN 1..l_array_event_id.count LOOP
16101    --
16102    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
16103    --
16104    l_event_id := l_array_event_id(idx);  -- 5648433
16105 
16106    --
16107    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
16108    --
16109 
16110    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
16111              (g_array_event(l_event_id).array_value_num('header_index'))
16112          ,'N'
16113          ) <> 'Y'
16114    THEN
16115       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16116          trace
16117             (p_msg      => 'Trancaction revesal option is not Y '
16118             ,p_level    => C_LEVEL_STATEMENT
16119             ,p_module   => l_log_module);
16120       END IF;
16121 
16122 --
16123 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
16124 --
16125 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
16126 --
16127 -- set event info as cache for other routines to refer event attributes
16128 --
16129 
16130 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
16131    l_previous_event_id := l_event_id;
16132 
16133    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
16134       (p_application_id           => p_application_id
16135       ,p_primary_ledger_id        => p_primary_ledger_id
16136       ,p_base_ledger_id           => p_base_ledger_id
16137       ,p_target_ledger_id         => p_target_ledger_id
16138       ,p_entity_id                => l_array_entity_id(Idx)
16139       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
16140       ,p_entity_code              => l_array_entity_code(Idx)
16141       ,p_transaction_num          => l_array_transaction_num(Idx)
16142       ,p_event_id                 => l_array_event_id(Idx)
16143       ,p_event_class_code         => l_array_class_code(Idx)
16144       ,p_event_type_code          => l_array_event_type(Idx)
16145       ,p_event_number             => l_array_event_number(Idx)
16146       ,p_event_date               => l_array_event_date(Idx)
16147       ,p_transaction_date         => l_array_transaction_date(Idx)
16148       ,p_reference_num_1          => l_array_reference_num_1(Idx)
16149       ,p_reference_num_2          => l_array_reference_num_2(Idx)
16150       ,p_reference_num_3          => l_array_reference_num_3(Idx)
16151       ,p_reference_num_4          => l_array_reference_num_4(Idx)
16152       ,p_reference_char_1         => l_array_reference_char_1(Idx)
16153       ,p_reference_char_2         => l_array_reference_char_2(Idx)
16154       ,p_reference_char_3         => l_array_reference_char_3(Idx)
16155       ,p_reference_char_4         => l_array_reference_char_4(Idx)
16156       ,p_reference_date_1         => l_array_reference_date_1(Idx)
16157       ,p_reference_date_2         => l_array_reference_date_2(Idx)
16158       ,p_reference_date_3         => l_array_reference_date_3(Idx)
16159       ,p_reference_date_4         => l_array_reference_date_4(Idx)
16160       ,p_event_created_by         => l_array_event_created_by(Idx)
16161       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
16162        --
16163 END IF;
16164 
16165 
16166 
16167 --
16168 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
16169 
16170 l_acct_reversal_source := SUBSTR(NULL, 1,30);
16171 
16172 IF l_continue_with_lines THEN
16173    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
16174       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
16175 
16176       xla_accounting_err_pkg.build_message
16177          (p_appli_s_name            => 'XLA'
16178          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
16179          ,p_token_1                 => 'LINE_NUMBER'
16180          ,p_value_1                 => l_array_extract_line_num(Idx)
16181          ,p_token_2                 => 'PRODUCT_NAME'
16182          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
16183          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
16184          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
16185          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
16186 
16187    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
16188       --
16189       -- following sets the accounting attributes needed to reverse
16190       -- accounting for a distributeion
16191       --
16192 
16193       --
16194       -- 5217187
16195       --
16196       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
16197       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
16198                                        g_array_event(l_event_id).array_value_num('header_index'));
16199       --
16200       --
16201 
16202       -- No reversal code generated
16203 
16204       xla_ae_lines_pkg.SetAcctReversalAttrs
16205          (p_event_id             => l_event_id
16206          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
16207          ,p_calculate_acctd_flag => l_calculate_acctd_flag
16208          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
16209    END IF;
16210 
16211    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
16212        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
16213 
16214 --
16215 AcctLineType_22 (
16216  p_application_id  => p_application_id
16217  ,p_event_id     => l_event_id
16218  ,p_calculate_acctd_flag => l_calculate_acctd_flag
16219  ,p_calculate_g_l_flag => l_calculate_g_l_flag
16220  ,p_actual_flag => l_actual_flag
16221  ,p_balance_type_code => l_balance_type_code
16222  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
16223  
16224  , p_source_8 => l_array_source_8(Idx)
16225  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
16226  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
16227  , p_source_11 => l_array_source_11(Idx)
16228  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
16229  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
16230  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
16231  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
16232  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
16233  , p_source_33 => g_array_event(l_event_id).array_value_char('source_33')
16234  , p_source_34 => g_array_event(l_event_id).array_value_char('source_34')
16235  , p_source_35 => g_array_event(l_event_id).array_value_char('source_35')
16236  , p_source_36 => g_array_event(l_event_id).array_value_char('source_36')
16237  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
16238  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
16239  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
16240  , p_source_40 => g_array_event(l_event_id).array_value_num('source_40')
16241  );
16242 If(l_balance_type_code = 'A') THEN
16243   l_actual_gain_loss_ref := l_gain_or_loss_ref;
16244 END IF;
16245 
16246 --
16247 
16248       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
16249       -- or secondary ledger that has different currency with primary
16250       -- or alc that is calculated by sla
16251       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
16252             (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'))
16253 
16254 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
16255 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
16256           AND (l_actual_flag = 'A')) THEN
16257         XLA_AE_LINES_PKG.CreateGainOrLossLines(
16258           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
16259          ,p_application_id   => p_application_id
16260          ,p_amb_context_code => 'DEFAULT'
16261          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
16262          ,p_event_class_code => C_EVENT_CLASS_CODE
16263          ,p_event_type_code  => C_EVENT_TYPE_CODE
16264          
16265          ,p_gain_ccid        => -1
16266          ,p_loss_ccid        => -1
16267 
16268          ,p_actual_flag      => l_actual_flag
16269          ,p_enc_flag         => null
16270          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
16271          ,p_enc_g_l_ref      => null
16272          );
16273       END IF;
16274    END IF;
16275 END IF;
16276 
16277    ELSE
16278       --
16279       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
16280       --
16281       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16282          trace
16283             (p_msg      => 'Trancaction revesal option is Y'
16284             ,p_level    => C_LEVEL_STATEMENT
16285             ,p_module   => l_log_module);
16286       END IF;
16287    END IF;
16288 
16289 END LOOP;
16290 l_result := XLA_AE_LINES_PKG.InsertLines ;
16291 end loop;
16292 close line_cur;
16293 
16294 
16295 --
16296 -- insert headers into xla_ae_headers_gt table
16297 --
16298 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
16299 
16300 -- insert into errors table here.
16301 
16302 END LOOP;
16303 
16304 --
16305 -- 4865292
16306 --
16307 -- Compare g_hdr_extract_count with event count in
16308 -- CreateHeadersAndLines.
16309 --
16310 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
16311 
16312 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16313    trace (p_msg     => '# rows extracted from header extract objects '
16314                     || ' (running total): '
16315                     || g_hdr_extract_count
16316          ,p_level   => C_LEVEL_STATEMENT
16317          ,p_module  => l_log_module);
16318 END IF;
16319 
16320 CLOSE header_cur;
16321 --
16322 
16323 --
16324 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16325    trace
16326       (p_msg      => 'END of EventClass_28'
16327       ,p_level    => C_LEVEL_PROCEDURE
16328       ,p_module   => l_log_module);
16329 END IF;
16330 --
16331 RETURN l_result;
16332 EXCEPTION
16333 WHEN xla_exceptions_pkg.application_exception THEN
16334    
16335 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
16336 
16337    
16338 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
16339 
16340    RAISE;
16341 
16342 WHEN NO_DATA_FOUND THEN
16343 
16344 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
16345 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
16346 
16347 FOR header_record IN header_cur
16348 LOOP
16349     l_array_header_events(header_record.event_id) := header_record.event_id;
16350 END LOOP;
16351 
16352 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
16353 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
16354 
16355 fnd_file.put_line(fnd_file.LOG, '                    ');
16356 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
16357 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
16358 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
16359 
16360 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
16361 LOOP
16362 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
16363 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
16364         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
16365 	END IF;
16366 END LOOP;
16367 
16368 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
16369 fnd_file.put_line(fnd_file.LOG, '                    ');
16370 
16371 
16372 xla_exceptions_pkg.raise_message
16373       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventClass_28');
16374 
16375 
16376 WHEN OTHERS THEN
16377    xla_exceptions_pkg.raise_message
16378       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventClass_28');
16379 END EventClass_28;
16380 --
16381 
16382 ---------------------------------------
16383 --
16384 -- PRIVATE PROCEDURE
16385 --         insert_sources_29
16386 --
16387 ----------------------------------------
16388 --
16389 PROCEDURE insert_sources_29(
16390                                 p_target_ledger_id       IN NUMBER
16391                               , p_language               IN VARCHAR2
16392                               , p_sla_ledger_id          IN NUMBER
16393                               , p_pad_start_date         IN DATE
16394                               , p_pad_end_date           IN DATE
16395                          )
16396 IS
16397 
16398 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_REQ_RCPT_NO_TP';
16399 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
16400 p_apps_owner                   VARCHAR2(30);
16401 l_log_module                   VARCHAR2(240);
16402 BEGIN
16403 IF g_log_enabled THEN
16404       l_log_module := C_DEFAULT_MODULE||'.insert_sources_29';
16405 END IF;
16406 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16407 
16408       trace
16409          (p_msg      => 'BEGIN of insert_sources_29'
16410          ,p_level    => C_LEVEL_PROCEDURE
16411          ,p_module   => l_log_module);
16412 
16413 END IF;
16414 
16415 -- select APPS owner
16416 SELECT oracle_username
16417   INTO p_apps_owner
16418   FROM fnd_oracle_userid
16419  WHERE read_only_flag = 'U'
16420 ;
16421 
16422 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16423       trace
16424          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
16425                         ' - p_language = '||p_language||
16426                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
16427                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
16428                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
16429                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
16430          ,p_level    => C_LEVEL_STATEMENT
16431          ,p_module   => l_log_module);
16432 END IF;
16433 
16434 
16435 --
16436 INSERT INTO xla_diag_sources --hdr1
16437 (
16438         event_id
16439       , ledger_id
16440       , sla_ledger_id
16441       , description_language
16442       , object_name
16443       , object_type_code
16444       , line_number
16445       , source_application_id
16446       , source_type_code
16447       , source_code
16448       , source_value
16449       , source_meaning
16450       , created_by
16451       , creation_date
16452       , last_update_date
16453       , last_updated_by
16454       , last_update_login
16455       , program_update_date
16456       , program_application_id
16457       , program_id
16458       , request_id
16459 )
16460 SELECT
16461         event_id
16462       , p_target_ledger_id
16463       , p_sla_ledger_id
16464       , p_language
16465       , object_name
16466       , object_type_code
16467       , line_number
16468       , source_application_id
16469       , source_type_code
16470       , source_code
16471       , SUBSTR(source_value ,1,1996)
16472       , SUBSTR(source_meaning,1,200)
16473       , xla_environment_pkg.g_Usr_Id
16474       , TRUNC(SYSDATE)
16475       , TRUNC(SYSDATE)
16476       , xla_environment_pkg.g_Usr_Id
16477       , xla_environment_pkg.g_Login_Id
16478       , TRUNC(SYSDATE)
16479       , xla_environment_pkg.g_Prog_Appl_Id
16480       , xla_environment_pkg.g_Prog_Id
16481       , xla_environment_pkg.g_Req_Id
16482   FROM (
16483        SELECT xet.event_id                  event_id
16484             , 0                             line_number
16485             , CASE r
16486                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
16487                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
16488                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
16489                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
16490                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
16491                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
16492                 WHEN 7 THEN 'CST_XLA_INV_HEADERS_V' 
16493                 
16494                ELSE null
16495               END                           object_name
16496             , CASE r
16497                 WHEN 1 THEN 'HEADER' 
16498                 WHEN 2 THEN 'HEADER' 
16499                 WHEN 3 THEN 'HEADER' 
16500                 WHEN 4 THEN 'HEADER' 
16501                 WHEN 5 THEN 'HEADER' 
16502                 WHEN 6 THEN 'HEADER' 
16503                 WHEN 7 THEN 'HEADER' 
16504                 
16505                 ELSE null
16506               END                           object_type_code
16507             , CASE r
16508                 WHEN 1 THEN '707' 
16509                 WHEN 2 THEN '707' 
16510                 WHEN 3 THEN '707' 
16511                 WHEN 4 THEN '707' 
16512                 WHEN 5 THEN '707' 
16513                 WHEN 6 THEN '707' 
16514                 WHEN 7 THEN '707' 
16515                 
16516                 ELSE null
16517               END                           source_application_id
16518             , 'S'             source_type_code
16519             , CASE r
16520                 WHEN 1 THEN 'TRANSACTION_ID' 
16521                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
16522                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
16523                 WHEN 4 THEN 'TRANSACTION_UOM' 
16524                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
16525                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
16526                 WHEN 7 THEN 'TRANSFER_TO_GL_INDICATOR' 
16527                 
16528                 ELSE null
16529               END                           source_code
16530             , CASE r
16531                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
16532                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
16533                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
16534                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
16535                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
16536                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
16537                 WHEN 7 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
16538                 
16539                 ELSE null
16540               END                           source_value
16541             , CASE r
16542                 WHEN 6 THEN fvl9.meaning
16543                 WHEN 7 THEN fvl42.meaning
16544                 
16545                 ELSE null
16546               END               source_meaning
16547         FROM xla_events_gt     xet  
16548       , CST_XLA_INV_HEADERS_V  h1
16549       , CST_XLA_INV_REF_V  h3
16550       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
16551       , CST_XLA_INV_TXN_TYPES_REF_V  h5
16552   , fnd_lookup_values    fvl9
16553   , fnd_lookup_values    fvl42
16554             ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
16555        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
16556          AND xet.event_type_code = C_EVENT_TYPE_CODE
16557             AND h1.event_id = xet.event_id
16558  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id   AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
16559   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
16560   AND fvl9.view_application_id(+) = 700
16561   AND fvl9.language(+)            = USERENV('LANG')
16562      AND fvl42.lookup_type(+)         = 'YES_NO'
16563   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
16564   AND fvl42.view_application_id(+) = 0
16565   AND fvl42.language(+)            = USERENV('LANG')
16566   
16567 )
16568 ;
16569 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16570 
16571       trace
16572          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
16573          ,p_level    => C_LEVEL_STATEMENT
16574          ,p_module   => l_log_module);
16575 
16576 END IF;
16577 --
16578 
16579 
16580 
16581 --
16582 INSERT INTO xla_diag_sources --line1
16583 (
16584         event_id
16585       , ledger_id
16586       , sla_ledger_id
16587       , description_language
16588       , object_name
16589       , object_type_code
16590       , line_number
16591       , source_application_id
16592       , source_type_code
16593       , source_code
16594       , source_value
16595       , source_meaning
16596       , created_by
16597       , creation_date
16598       , last_update_date
16599       , last_updated_by
16600       , last_update_login
16601       , program_update_date
16602       , program_application_id
16603       , program_id
16604       , request_id
16605 )
16606 SELECT  event_id
16607       , p_target_ledger_id
16608       , p_sla_ledger_id
16609       , p_language
16610       , object_name
16611       , object_type_code
16612       , line_number
16613       , source_application_id
16614       , source_type_code
16615       , source_code
16616       , SUBSTR(source_value,1,1996)
16617       , SUBSTR(source_meaning,1,200)
16618       , xla_environment_pkg.g_Usr_Id
16619       , TRUNC(SYSDATE)
16620       , TRUNC(SYSDATE)
16621       , xla_environment_pkg.g_Usr_Id
16622       , xla_environment_pkg.g_Login_Id
16623       , TRUNC(SYSDATE)
16624       , xla_environment_pkg.g_Prog_Appl_Id
16625       , xla_environment_pkg.g_Prog_Id
16626       , xla_environment_pkg.g_Req_Id
16627   FROM (
16628        SELECT xet.event_id                  event_id
16629             , l2.line_number                 line_number
16630             , CASE r
16631                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
16632                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
16633                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
16634                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
16635                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
16636                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
16637                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
16638                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
16639                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
16640                 
16641                ELSE null
16642               END                           object_name
16643             , CASE r
16644                 WHEN 1 THEN 'LINE' 
16645                 WHEN 2 THEN 'LINE' 
16646                 WHEN 3 THEN 'LINE' 
16647                 WHEN 4 THEN 'LINE' 
16648                 WHEN 5 THEN 'LINE' 
16649                 WHEN 6 THEN 'LINE' 
16650                 WHEN 7 THEN 'LINE' 
16651                 WHEN 8 THEN 'LINE' 
16652                 WHEN 9 THEN 'LINE' 
16653                 
16654                 ELSE null
16655               END                           object_type_code
16656             , CASE r
16657                 WHEN 1 THEN '707' 
16658                 WHEN 2 THEN '707' 
16659                 WHEN 3 THEN '707' 
16660                 WHEN 4 THEN '707' 
16661                 WHEN 5 THEN '707' 
16662                 WHEN 6 THEN '707' 
16663                 WHEN 7 THEN '707' 
16664                 WHEN 8 THEN '707' 
16665                 WHEN 9 THEN '707' 
16666                 
16667                 ELSE null
16668               END                           source_application_id
16669             , 'S'             source_type_code
16670             , CASE r
16671                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
16672                 WHEN 2 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
16673                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
16674                 WHEN 4 THEN 'ENTERED_AMOUNT' 
16675                 WHEN 5 THEN 'CURRENCY_CODE' 
16676                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
16677                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
16678                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
16679                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
16680                 
16681                 ELSE null
16682               END                           source_code
16683             , CASE r
16684                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
16685                 WHEN 2 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
16686                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
16687                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
16688                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CODE)
16689                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
16690                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
16691                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
16692                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
16693                 
16694                 ELSE null
16695               END                           source_value
16696             , null              source_meaning
16697          FROM  xla_events_gt     xet  
16698         , CST_XLA_INV_LINES_V  l2
16699             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
16700         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
16701           AND xet.event_type_code = C_EVENT_TYPE_CODE
16702             AND l2.event_id          = xet.event_id
16703 
16704 )
16705 ;
16706 --
16707 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16708 
16709       trace
16710          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
16711          ,p_level    => C_LEVEL_STATEMENT
16712          ,p_module   => l_log_module);
16713 
16714 END IF;
16715 
16716 
16717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16718       trace
16719          (p_msg      => 'END of insert_sources_29'
16720          ,p_level    => C_LEVEL_PROCEDURE
16721          ,p_module   => l_log_module);
16722 END IF;
16723 EXCEPTION
16724   WHEN xla_exceptions_pkg.application_exception THEN
16725       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
16726             trace
16727                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
16728                ,p_level    => C_LEVEL_EXCEPTION
16729                ,p_module   => l_log_module);
16730       END IF;
16731       RAISE;
16732   WHEN OTHERS THEN
16733       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
16734             trace
16735                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
16736                ,p_level    => C_LEVEL_EXCEPTION
16737                ,p_module   => l_log_module);
16738        END IF;
16739        xla_exceptions_pkg.raise_message
16740            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_29');
16741 END insert_sources_29;
16742 --
16743 
16744 ---------------------------------------
16745 --
16746 -- PRIVATE FUNCTION
16747 --         EventType_29
16748 --
16749 ----------------------------------------
16750 --
16751 FUNCTION EventType_29
16752        (p_application_id         IN NUMBER
16753        ,p_base_ledger_id         IN NUMBER
16754        ,p_target_ledger_id       IN NUMBER
16755        ,p_language               IN VARCHAR2
16756        ,p_currency_code          IN VARCHAR2
16757        ,p_sla_ledger_id          IN NUMBER
16758        ,p_pad_start_date         IN DATE
16759        ,p_pad_end_date           IN DATE
16760        ,p_primary_ledger_id      IN NUMBER)
16761 RETURN BOOLEAN IS
16762 --
16763 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_REQ_RCPT_NO_TP';
16764 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
16765 
16766 l_calculate_acctd_flag   VARCHAR2(1) :='N';
16767 l_calculate_g_l_flag     VARCHAR2(1) :='N';
16768 --
16769 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16770 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16771 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
16772 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16773 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16774 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
16775 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
16776 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16777 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16778 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16779 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16780 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16781 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16782 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
16783 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16784 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16785 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16786 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
16787 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16788 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16789 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16790 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
16791 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
16792 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
16793 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
16794 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
16795 
16796 l_event_id                             NUMBER;
16797 l_previous_event_id                    NUMBER;
16798 l_first_event_id                       NUMBER;
16799 l_last_event_id                        NUMBER;
16800 
16801 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
16802 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
16803 --
16804 --
16805 l_result                    BOOLEAN := TRUE;
16806 l_rows                      NUMBER  := 1000;
16807 l_event_type_name           VARCHAR2(80) := 'Internal Order Receipt into Expense, no Transfer Pricing';
16808 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
16809 l_description               VARCHAR2(4000);
16810 l_transaction_reversal      NUMBER;
16811 l_ae_header_id              NUMBER;
16812 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
16813 l_log_module                VARCHAR2(240);
16814 --
16815 l_acct_reversal_source      VARCHAR2(30);
16816 l_trx_reversal_source       VARCHAR2(30);
16817 
16818 l_continue_with_lines       BOOLEAN := TRUE;
16819 --
16820 l_acc_rev_gl_date_source    DATE;                      -- 4262811
16821 --
16822 type t_array_event_id is table of number index by binary_integer;
16823 
16824 l_rec_array_event                    t_rec_array_event;
16825 l_null_rec_array_event               t_rec_array_event;
16826 l_array_ae_header_id                 xla_number_array_type;
16827 l_actual_flag                        VARCHAR2(1) := NULL;
16828 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
16829 l_balance_type_code                  VARCHAR2(1) :=NULL;
16830 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
16831 
16832 --
16833 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
16834 --
16835 
16836 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
16837 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
16838 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
16839 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
16840 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
16841 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
16842 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
16843 
16844 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
16845 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
16846 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
16847 TYPE t_array_source_10 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
16848 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
16849 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
16850 TYPE t_array_source_13 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
16851 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
16852 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
16853 
16854 l_array_source_1              t_array_source_1;
16855 l_array_source_2              t_array_source_2;
16856 l_array_source_3              t_array_source_3;
16857 l_array_source_4              t_array_source_4;
16858 l_array_source_5              t_array_source_5;
16859 l_array_source_9              t_array_source_9;
16860 l_array_source_9_meaning      t_array_lookup_meaning;
16861 l_array_source_42              t_array_source_42;
16862 l_array_source_42_meaning      t_array_lookup_meaning;
16863 
16864 l_array_source_6      t_array_source_6;
16865 l_array_source_7      t_array_source_7;
16866 l_array_source_8      t_array_source_8;
16867 l_array_source_10      t_array_source_10;
16868 l_array_source_11      t_array_source_11;
16869 l_array_source_12      t_array_source_12;
16870 l_array_source_13      t_array_source_13;
16871 l_array_source_14      t_array_source_14;
16872 l_array_source_15      t_array_source_15;
16873 
16874 --
16875 CURSOR header_cur
16876 IS
16877 SELECT /*+ leading(xet) cardinality(xet,1) */
16878 -- Event Type Code: EXP_REQ_RCPT_NO_TP
16879 -- Event Class Code: INT_ORDER_TO_EXP
16880     xet.entity_id
16881   , xet.legal_entity_id
16882   , xet.entity_code
16883   , xet.transaction_number
16884   , xet.event_id
16885   , xet.event_class_code
16886   , xet.event_type_code
16887   , xet.event_number
16888   , xet.event_date
16889   , xet.transaction_date
16890   , xet.reference_num_1
16891   , xet.reference_num_2
16892   , xet.reference_num_3
16893   , xet.reference_num_4
16894   , xet.reference_char_1
16895   , xet.reference_char_2
16896   , xet.reference_char_3
16897   , xet.reference_char_4
16898   , xet.reference_date_1
16899   , xet.reference_date_2
16900   , xet.reference_date_3
16901   , xet.reference_date_4
16902   , xet.event_created_by
16903   , xet.budgetary_control_flag 
16904   , h1.TRANSACTION_ID    source_1
16905   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
16906   , h3.TRANSACTION_QUANTITY    source_3
16907   , h3.TRANSACTION_UOM    source_4
16908   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
16909   , h1.DISTRIBUTION_TYPE    source_9
16910   , fvl9.meaning   source_9_meaning
16911   , h1.TRANSFER_TO_GL_INDICATOR    source_42
16912   , fvl42.meaning   source_42_meaning
16913   FROM xla_events_gt     xet 
16914   , CST_XLA_INV_HEADERS_V  h1
16915   , CST_XLA_INV_REF_V  h3
16916   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
16917   , CST_XLA_INV_TXN_TYPES_REF_V  h5
16918   , fnd_lookup_values    fvl9
16919   , fnd_lookup_values    fvl42
16920  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
16921    and xet.event_type_code = C_EVENT_TYPE_CODE
16922    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
16923  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID   AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
16924   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
16925   AND fvl9.view_application_id(+) = 700
16926   AND fvl9.language(+)            = USERENV('LANG')
16927      AND fvl42.lookup_type(+)         = 'YES_NO'
16928   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
16929   AND fvl42.view_application_id(+) = 0
16930   AND fvl42.language(+)            = USERENV('LANG')
16931   
16932  ORDER BY event_id
16933 ;
16934 
16935 
16936 --
16937 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
16938 IS
16939 SELECT /*+ leading(xet) cardinality(xet,1) */
16940 -- Event Type Code: EXP_REQ_RCPT_NO_TP
16941 -- Event Class Code: INT_ORDER_TO_EXP
16942     xet.entity_id
16943    ,xet.legal_entity_id
16944    ,xet.entity_code
16945    ,xet.transaction_number
16946    ,xet.event_id
16947    ,xet.event_class_code
16948    ,xet.event_type_code
16949    ,xet.event_number
16950    ,xet.event_date
16951    ,xet.transaction_date
16952    ,xet.reference_num_1
16953    ,xet.reference_num_2
16954    ,xet.reference_num_3
16955    ,xet.reference_num_4
16956    ,xet.reference_char_1
16957    ,xet.reference_char_2
16958    ,xet.reference_char_3
16959    ,xet.reference_char_4
16960    ,xet.reference_date_1
16961    ,xet.reference_date_2
16962    ,xet.reference_date_3
16963    ,xet.reference_date_4
16964    ,xet.event_created_by
16965    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
16966   , l2.CODE_COMBINATION_ID    source_6
16967   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
16968   , l2.DISTRIBUTION_IDENTIFIER    source_8
16969   , l2.ENTERED_AMOUNT    source_10
16970   , l2.CURRENCY_CODE    source_11
16971   , l2.CURRENCY_CONVERSION_DATE    source_12
16972   , l2.CURRENCY_CONVERSION_RATE    source_13
16973   , l2.CURRENCY_CONVERSION_TYPE    source_14
16974   , l2.ACCOUNTED_AMOUNT    source_15
16975   FROM xla_events_gt     xet 
16976   , CST_XLA_INV_LINES_V  l2
16977  WHERE xet.event_id between x_first_event_id and x_last_event_id
16978    and xet.event_date between p_pad_start_date and p_pad_end_date
16979    and xet.event_type_code = C_EVENT_TYPE_CODE
16980    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
16981 ;
16982 
16983 --
16984 BEGIN
16985 IF g_log_enabled THEN
16986    l_log_module := C_DEFAULT_MODULE||'.EventType_29';
16987 END IF;
16988 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16989    trace
16990       (p_msg      => 'BEGIN of EventType_29'
16991       ,p_level    => C_LEVEL_PROCEDURE
16992       ,p_module   => l_log_module);
16993 END IF;
16994 
16995 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
16996    trace
16997       (p_msg      => 'p_application_id = '||p_application_id||
16998                      ' - p_base_ledger_id = '||p_base_ledger_id||
16999                      ' - p_target_ledger_id  = '||p_target_ledger_id||
17000                      ' - p_language = '||p_language||
17001                      ' - p_currency_code = '||p_currency_code||
17002                      ' - p_sla_ledger_id = '||p_sla_ledger_id
17003       ,p_level    => C_LEVEL_STATEMENT
17004       ,p_module   => l_log_module);
17005 END IF;
17006 --
17007 -- initialze arrays
17008 --
17009 g_array_event.DELETE;
17010 l_rec_array_event := l_null_rec_array_event;
17011 --
17012 --------------------------------------
17013 -- 4262811 Initialze MPA Line Number
17014 --------------------------------------
17015 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
17016 
17017 --
17018 
17019 --
17020 OPEN header_cur;
17021 --
17022 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17023    trace
17024    (p_msg      => 'SQL - FETCH header_cur'
17025    ,p_level    => C_LEVEL_STATEMENT
17026    ,p_module   => l_log_module);
17027 END IF;
17028 --
17029 LOOP
17030 FETCH header_cur BULK COLLECT INTO
17031         l_array_entity_id
17032       , l_array_legal_entity_id
17033       , l_array_entity_code
17034       , l_array_transaction_num
17035       , l_array_event_id
17036       , l_array_class_code
17037       , l_array_event_type
17038       , l_array_event_number
17039       , l_array_event_date
17040       , l_array_transaction_date
17041       , l_array_reference_num_1
17042       , l_array_reference_num_2
17043       , l_array_reference_num_3
17044       , l_array_reference_num_4
17045       , l_array_reference_char_1
17046       , l_array_reference_char_2
17047       , l_array_reference_char_3
17048       , l_array_reference_char_4
17049       , l_array_reference_date_1
17050       , l_array_reference_date_2
17051       , l_array_reference_date_3
17052       , l_array_reference_date_4
17053       , l_array_event_created_by
17054       , l_array_budgetary_control_flag 
17055       , l_array_source_1
17056       , l_array_source_2
17057       , l_array_source_3
17058       , l_array_source_4
17059       , l_array_source_5
17060       , l_array_source_9
17061       , l_array_source_9_meaning
17062       , l_array_source_42
17063       , l_array_source_42_meaning
17064       LIMIT l_rows;
17065 --
17066 IF (C_LEVEL_EVENT >= g_log_level) THEN
17067    trace
17068    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
17069    ,p_level    => C_LEVEL_EVENT
17070    ,p_module   => l_log_module);
17071 END IF;
17072 --
17073 EXIT WHEN l_array_entity_id.COUNT = 0;
17074 
17075 -- initialize arrays
17076 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
17077 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
17078 
17079 --
17080 -- Bug 4458708
17081 --
17082 XLA_AE_LINES_PKG.g_LineNumber := 0;
17083 
17084 
17085 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
17086 g_last_hdr_idx := l_array_event_id.LAST;
17087 --
17088 -- loop for the headers. Each iteration is for each header extract row
17089 -- fetched in header cursor
17090 --
17091 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
17092 
17093 --
17094 -- set event info as cache for other routines to refer event attributes
17095 --
17096 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
17097    (p_application_id           => p_application_id
17098    ,p_primary_ledger_id        => p_primary_ledger_id
17099    ,p_base_ledger_id           => p_base_ledger_id
17100    ,p_target_ledger_id         => p_target_ledger_id
17101    ,p_entity_id                => l_array_entity_id(hdr_idx)
17102    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
17103    ,p_entity_code              => l_array_entity_code(hdr_idx)
17104    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
17105    ,p_event_id                 => l_array_event_id(hdr_idx)
17106    ,p_event_class_code         => l_array_class_code(hdr_idx)
17107    ,p_event_type_code          => l_array_event_type(hdr_idx)
17108    ,p_event_number             => l_array_event_number(hdr_idx)
17109    ,p_event_date               => l_array_event_date(hdr_idx)
17110    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
17111    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
17112    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
17113    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
17114    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
17115    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
17116    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
17117    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
17118    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
17119    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
17120    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
17121    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
17122    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
17123    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
17124    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
17125 
17126 --
17127 -- set the status of entry to C_VALID (0)
17128 --
17129 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
17130 
17131 --
17132 -- initialize a row for ae header
17133 --
17134 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
17135 
17136 l_event_id := l_array_event_id(hdr_idx);
17137 
17138 --
17139 -- storing the hdr_idx for event. May be used by line cursor.
17140 --
17141 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
17142 
17143 --
17144 -- store sources from header extract. This can be improved to
17145 -- store only those sources from header extract that may be used in lines
17146 --
17147 
17148 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
17149 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
17150 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
17151 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
17152 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
17153 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
17154 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
17155 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
17156 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
17157 
17158 --
17159 -- initilaize the status of ae headers for diffrent balance types
17160 -- the status is initialised to C_NOT_CREATED (2)
17161 --
17162 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
17163 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
17164 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
17165 
17166 --
17167 -- call api to validate and store accounting attributes for header
17168 --
17169 
17170 ------------------------------------------------------------
17171 -- Accrual Reversal : to get date for Standard Source (NONE)
17172 ------------------------------------------------------------
17173 l_acc_rev_gl_date_source := NULL;
17174 
17175      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
17176       l_rec_acct_attrs.array_date_value(1) := 
17177 xla_ae_sources_pkg.GetSystemSourceDate(
17178    p_source_code           => 'XLA_REFERENCE_DATE_1'
17179  , p_source_type_code      => 'Y'
17180  , p_source_application_id =>  602
17181 );
17182      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
17183       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_42');
17184 
17185 
17186 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
17187 
17188 XLA_AE_HEADER_PKG.SetJeCategoryName;
17189 
17190 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
17191 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
17192 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
17193 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
17194 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
17195 
17196 
17197 --
17198 xla_ae_header_pkg.SetHdrDescription(
17199    p_description => Description_1 (
17200    p_application_id => p_application_id 
17201  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
17202  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
17203  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
17204  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
17205  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
17206    )
17207 );
17208 --
17209 
17210 -- No header level analytical criteria
17211 
17212 --
17213 --accounting attribute enhancement, bug 3612931
17214 --
17215 l_trx_reversal_source := SUBSTR(NULL, 1,30);
17216 
17217 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
17218    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
17219 
17220    xla_accounting_err_pkg.build_message
17221       (p_appli_s_name            => 'XLA'
17222       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
17223       ,p_token_1                 => 'ACCT_ATTR_NAME'
17224       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
17225       ,p_token_2                 => 'PRODUCT_NAME'
17226       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
17227       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
17228       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
17229       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
17230 
17231 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
17232    --
17233    -- following sets the accounting attributes needed to reverse
17234    -- accounting for a distributeion
17235    --
17236    xla_ae_lines_pkg.SetTrxReversalAttrs
17237       (p_event_id              => l_event_id
17238       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
17239       ,p_trx_reversal_source   => l_trx_reversal_source);
17240 
17241 END IF;
17242 
17243 
17244 ----------------------------------------------------------------
17245 -- 4262811 -  update the header statuses to invalid in need be
17246 ----------------------------------------------------------------
17247 --
17248 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
17249 
17250 
17251   -----------------------------------------------
17252   -- No accrual reversal for the event class/type
17253   -----------------------------------------------
17254 ----------------------------------------------------------------
17255 
17256 --
17257 -- this ends the header loop iteration for one bulk fetch
17258 --
17259 END LOOP;
17260 
17261 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
17262 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
17263 
17264 --
17265 -- insert dummy rows into lines gt table that were created due to
17266 -- transaction reversals
17267 --
17268 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
17269    l_result := XLA_AE_LINES_PKG.InsertLines;
17270 END IF;
17271 
17272 --
17273 -- reset the temp_line_num for each set of events fetched from header
17274 -- cursor rather than doing it for each new event in line cursor
17275 -- Bug 3939231
17276 --
17277 xla_ae_lines_pkg.g_temp_line_num := 0;
17278 
17279 
17280 
17281 --
17282 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
17283 --
17284 --
17285 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17286 
17287       trace
17288          (p_msg      => 'SQL - FETCH line_cur'
17289          ,p_level    => C_LEVEL_STATEMENT
17290          ,p_module   => l_log_module);
17291 
17292 END IF;
17293 --
17294 --
17295 LOOP
17296   --
17297   FETCH line_cur BULK COLLECT INTO
17298         l_array_entity_id
17299       , l_array_legal_entity_id
17300       , l_array_entity_code
17301       , l_array_transaction_num
17302       , l_array_event_id
17303       , l_array_class_code
17304       , l_array_event_type
17305       , l_array_event_number
17306       , l_array_event_date
17307       , l_array_transaction_date
17308       , l_array_reference_num_1
17309       , l_array_reference_num_2
17310       , l_array_reference_num_3
17311       , l_array_reference_num_4
17312       , l_array_reference_char_1
17313       , l_array_reference_char_2
17314       , l_array_reference_char_3
17315       , l_array_reference_char_4
17316       , l_array_reference_date_1
17317       , l_array_reference_date_2
17318       , l_array_reference_date_3
17319       , l_array_reference_date_4
17320       , l_array_event_created_by
17321       , l_array_budgetary_control_flag
17322       , l_array_extract_line_num 
17323       , l_array_source_6
17324       , l_array_source_7
17325       , l_array_source_8
17326       , l_array_source_10
17327       , l_array_source_11
17328       , l_array_source_12
17329       , l_array_source_13
17330       , l_array_source_14
17331       , l_array_source_15
17332       LIMIT l_rows;
17333 
17334   --
17335   IF (C_LEVEL_EVENT >= g_log_level) THEN
17336             trace
17337                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
17338                ,p_level    => C_LEVEL_EVENT
17339                ,p_module   => l_log_module);
17340   END IF;
17341   --
17342   EXIT WHEN l_array_entity_id.count = 0;
17343 
17344   XLA_AE_LINES_PKG.g_rec_lines := null;
17345 
17346 --
17347 -- Bug 4458708
17348 --
17349 XLA_AE_LINES_PKG.g_LineNumber := 0;
17350 --
17351 --
17352 
17353 FOR Idx IN 1..l_array_event_id.count LOOP
17354    --
17355    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
17356    --
17357    l_event_id := l_array_event_id(idx);  -- 5648433
17358 
17359    --
17360    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
17361    --
17362 
17363    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
17364              (g_array_event(l_event_id).array_value_num('header_index'))
17365          ,'N'
17366          ) <> 'Y'
17367    THEN
17368       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17369          trace
17370             (p_msg      => 'Trancaction revesal option is not Y '
17371             ,p_level    => C_LEVEL_STATEMENT
17372             ,p_module   => l_log_module);
17373       END IF;
17374 
17375 --
17376 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
17377 --
17378 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
17379 --
17380 -- set event info as cache for other routines to refer event attributes
17381 --
17382 
17383 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
17384    l_previous_event_id := l_event_id;
17385 
17386    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
17387       (p_application_id           => p_application_id
17388       ,p_primary_ledger_id        => p_primary_ledger_id
17389       ,p_base_ledger_id           => p_base_ledger_id
17390       ,p_target_ledger_id         => p_target_ledger_id
17391       ,p_entity_id                => l_array_entity_id(Idx)
17392       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
17393       ,p_entity_code              => l_array_entity_code(Idx)
17394       ,p_transaction_num          => l_array_transaction_num(Idx)
17395       ,p_event_id                 => l_array_event_id(Idx)
17396       ,p_event_class_code         => l_array_class_code(Idx)
17397       ,p_event_type_code          => l_array_event_type(Idx)
17398       ,p_event_number             => l_array_event_number(Idx)
17399       ,p_event_date               => l_array_event_date(Idx)
17400       ,p_transaction_date         => l_array_transaction_date(Idx)
17401       ,p_reference_num_1          => l_array_reference_num_1(Idx)
17402       ,p_reference_num_2          => l_array_reference_num_2(Idx)
17403       ,p_reference_num_3          => l_array_reference_num_3(Idx)
17404       ,p_reference_num_4          => l_array_reference_num_4(Idx)
17405       ,p_reference_char_1         => l_array_reference_char_1(Idx)
17406       ,p_reference_char_2         => l_array_reference_char_2(Idx)
17407       ,p_reference_char_3         => l_array_reference_char_3(Idx)
17408       ,p_reference_char_4         => l_array_reference_char_4(Idx)
17409       ,p_reference_date_1         => l_array_reference_date_1(Idx)
17410       ,p_reference_date_2         => l_array_reference_date_2(Idx)
17411       ,p_reference_date_3         => l_array_reference_date_3(Idx)
17412       ,p_reference_date_4         => l_array_reference_date_4(Idx)
17413       ,p_event_created_by         => l_array_event_created_by(Idx)
17414       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
17415        --
17416 END IF;
17417 
17418 
17419 
17420 --
17421 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
17422 
17423 l_acct_reversal_source := SUBSTR(NULL, 1,30);
17424 
17425 IF l_continue_with_lines THEN
17426    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
17427       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
17428 
17429       xla_accounting_err_pkg.build_message
17430          (p_appli_s_name            => 'XLA'
17431          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
17432          ,p_token_1                 => 'LINE_NUMBER'
17433          ,p_value_1                 => l_array_extract_line_num(Idx)
17434          ,p_token_2                 => 'PRODUCT_NAME'
17435          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
17436          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
17437          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
17438          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
17439 
17440    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
17441       --
17442       -- following sets the accounting attributes needed to reverse
17443       -- accounting for a distributeion
17444       --
17445 
17446       --
17447       -- 5217187
17448       --
17449       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
17450       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
17451                                        g_array_event(l_event_id).array_value_num('header_index'));
17452       --
17453       --
17454 
17455       -- No reversal code generated
17456 
17457       xla_ae_lines_pkg.SetAcctReversalAttrs
17458          (p_event_id             => l_event_id
17459          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
17460          ,p_calculate_acctd_flag => l_calculate_acctd_flag
17461          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
17462    END IF;
17463 
17464    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
17465        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
17466 
17467 --
17468 AcctLineType_5 (
17469  p_application_id  => p_application_id
17470  ,p_event_id     => l_event_id
17471  ,p_calculate_acctd_flag => l_calculate_acctd_flag
17472  ,p_calculate_g_l_flag => l_calculate_g_l_flag
17473  ,p_actual_flag => l_actual_flag
17474  ,p_balance_type_code => l_balance_type_code
17475  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
17476  
17477  , p_source_6 => l_array_source_6(Idx)
17478  , p_source_7 => l_array_source_7(Idx)
17479  , p_source_8 => l_array_source_8(Idx)
17480  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
17481  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
17482  , p_source_10 => l_array_source_10(Idx)
17483  , p_source_11 => l_array_source_11(Idx)
17484  , p_source_12 => l_array_source_12(Idx)
17485  , p_source_13 => l_array_source_13(Idx)
17486  , p_source_14 => l_array_source_14(Idx)
17487  , p_source_15 => l_array_source_15(Idx)
17488  );
17489 If(l_balance_type_code = 'A') THEN
17490   l_actual_gain_loss_ref := l_gain_or_loss_ref;
17491 END IF;
17492 
17493 --
17494 
17495       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
17496       -- or secondary ledger that has different currency with primary
17497       -- or alc that is calculated by sla
17498       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
17499             (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'))
17500 
17501 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
17502 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
17503           AND (l_actual_flag = 'A')) THEN
17504         XLA_AE_LINES_PKG.CreateGainOrLossLines(
17505           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
17506          ,p_application_id   => p_application_id
17507          ,p_amb_context_code => 'DEFAULT'
17508          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
17509          ,p_event_class_code => C_EVENT_CLASS_CODE
17510          ,p_event_type_code  => C_EVENT_TYPE_CODE
17511          
17512          ,p_gain_ccid        => -1
17513          ,p_loss_ccid        => -1
17514 
17515          ,p_actual_flag      => l_actual_flag
17516          ,p_enc_flag         => null
17517          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
17518          ,p_enc_g_l_ref      => null
17519          );
17520       END IF;
17521    END IF;
17522 END IF;
17523 
17524    ELSE
17525       --
17526       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
17527       --
17528       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17529          trace
17530             (p_msg      => 'Trancaction revesal option is Y'
17531             ,p_level    => C_LEVEL_STATEMENT
17532             ,p_module   => l_log_module);
17533       END IF;
17534    END IF;
17535 
17536 END LOOP;
17537 l_result := XLA_AE_LINES_PKG.InsertLines ;
17538 end loop;
17539 close line_cur;
17540 
17541 
17542 --
17543 -- insert headers into xla_ae_headers_gt table
17544 --
17545 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
17546 
17547 -- insert into errors table here.
17548 
17549 END LOOP;
17550 
17551 --
17552 -- 4865292
17553 --
17554 -- Compare g_hdr_extract_count with event count in
17555 -- CreateHeadersAndLines.
17556 --
17557 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
17558 
17559 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17560    trace (p_msg     => '# rows extracted from header extract objects '
17561                     || ' (running total): '
17562                     || g_hdr_extract_count
17563          ,p_level   => C_LEVEL_STATEMENT
17564          ,p_module  => l_log_module);
17565 END IF;
17566 
17567 CLOSE header_cur;
17568 --
17569 
17570 --
17571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17572    trace
17573       (p_msg      => 'END of EventType_29'
17574       ,p_level    => C_LEVEL_PROCEDURE
17575       ,p_module   => l_log_module);
17576 END IF;
17577 --
17578 RETURN l_result;
17579 EXCEPTION
17580 WHEN xla_exceptions_pkg.application_exception THEN
17581    
17582 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
17583 
17584    
17585 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
17586 
17587    RAISE;
17588 
17589 WHEN NO_DATA_FOUND THEN
17590 
17591 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
17592 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
17593 
17594 FOR header_record IN header_cur
17595 LOOP
17596     l_array_header_events(header_record.event_id) := header_record.event_id;
17597 END LOOP;
17598 
17599 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
17600 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
17601 
17602 fnd_file.put_line(fnd_file.LOG, '                    ');
17603 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
17604 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
17605 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
17606 
17607 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
17608 LOOP
17609 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
17610 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
17611         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
17612 	END IF;
17613 END LOOP;
17614 
17615 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
17616 fnd_file.put_line(fnd_file.LOG, '                    ');
17617 
17618 
17619 xla_exceptions_pkg.raise_message
17620       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_29');
17621 
17622 
17623 WHEN OTHERS THEN
17624    xla_exceptions_pkg.raise_message
17625       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_29');
17626 END EventType_29;
17627 --
17628 
17629 ---------------------------------------
17630 --
17631 -- PRIVATE PROCEDURE
17632 --         insert_sources_30
17633 --
17634 ----------------------------------------
17635 --
17636 PROCEDURE insert_sources_30(
17637                                 p_target_ledger_id       IN NUMBER
17638                               , p_language               IN VARCHAR2
17639                               , p_sla_ledger_id          IN NUMBER
17640                               , p_pad_start_date         IN DATE
17641                               , p_pad_end_date           IN DATE
17642                          )
17643 IS
17644 
17645 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_REQ_RCPT_TP';
17646 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
17647 p_apps_owner                   VARCHAR2(30);
17648 l_log_module                   VARCHAR2(240);
17649 BEGIN
17650 IF g_log_enabled THEN
17651       l_log_module := C_DEFAULT_MODULE||'.insert_sources_30';
17652 END IF;
17653 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17654 
17655       trace
17656          (p_msg      => 'BEGIN of insert_sources_30'
17657          ,p_level    => C_LEVEL_PROCEDURE
17658          ,p_module   => l_log_module);
17659 
17660 END IF;
17661 
17662 -- select APPS owner
17663 SELECT oracle_username
17664   INTO p_apps_owner
17665   FROM fnd_oracle_userid
17666  WHERE read_only_flag = 'U'
17667 ;
17668 
17669 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17670       trace
17671          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
17672                         ' - p_language = '||p_language||
17673                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
17674                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
17675                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
17676                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
17677          ,p_level    => C_LEVEL_STATEMENT
17678          ,p_module   => l_log_module);
17679 END IF;
17680 
17681 
17682 --
17683 INSERT INTO xla_diag_sources --hdr1
17684 (
17685         event_id
17686       , ledger_id
17687       , sla_ledger_id
17688       , description_language
17689       , object_name
17690       , object_type_code
17691       , line_number
17692       , source_application_id
17693       , source_type_code
17694       , source_code
17695       , source_value
17696       , source_meaning
17697       , created_by
17698       , creation_date
17699       , last_update_date
17700       , last_updated_by
17701       , last_update_login
17702       , program_update_date
17703       , program_application_id
17704       , program_id
17705       , request_id
17706 )
17707 SELECT
17708         event_id
17709       , p_target_ledger_id
17710       , p_sla_ledger_id
17711       , p_language
17712       , object_name
17713       , object_type_code
17714       , line_number
17715       , source_application_id
17716       , source_type_code
17717       , source_code
17718       , SUBSTR(source_value ,1,1996)
17719       , SUBSTR(source_meaning,1,200)
17720       , xla_environment_pkg.g_Usr_Id
17721       , TRUNC(SYSDATE)
17722       , TRUNC(SYSDATE)
17723       , xla_environment_pkg.g_Usr_Id
17724       , xla_environment_pkg.g_Login_Id
17725       , TRUNC(SYSDATE)
17726       , xla_environment_pkg.g_Prog_Appl_Id
17727       , xla_environment_pkg.g_Prog_Id
17728       , xla_environment_pkg.g_Req_Id
17729   FROM (
17730        SELECT xet.event_id                  event_id
17731             , 0                             line_number
17732             , CASE r
17733                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
17734                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
17735                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
17736                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
17737                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
17738                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
17739                 WHEN 7 THEN 'CST_XLA_INV_HEADERS_V' 
17740                 
17741                ELSE null
17742               END                           object_name
17743             , CASE r
17744                 WHEN 1 THEN 'HEADER' 
17745                 WHEN 2 THEN 'HEADER' 
17746                 WHEN 3 THEN 'HEADER' 
17747                 WHEN 4 THEN 'HEADER' 
17748                 WHEN 5 THEN 'HEADER' 
17749                 WHEN 6 THEN 'HEADER' 
17750                 WHEN 7 THEN 'HEADER' 
17751                 
17752                 ELSE null
17753               END                           object_type_code
17754             , CASE r
17755                 WHEN 1 THEN '707' 
17756                 WHEN 2 THEN '707' 
17757                 WHEN 3 THEN '707' 
17758                 WHEN 4 THEN '707' 
17759                 WHEN 5 THEN '707' 
17760                 WHEN 6 THEN '707' 
17761                 WHEN 7 THEN '707' 
17762                 
17763                 ELSE null
17764               END                           source_application_id
17765             , 'S'             source_type_code
17766             , CASE r
17767                 WHEN 1 THEN 'TRANSACTION_ID' 
17768                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
17769                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
17770                 WHEN 4 THEN 'TRANSACTION_UOM' 
17771                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
17772                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
17773                 WHEN 7 THEN 'TRANSFER_TO_GL_INDICATOR' 
17774                 
17775                 ELSE null
17776               END                           source_code
17777             , CASE r
17778                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
17779                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
17780                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
17781                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
17782                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
17783                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
17784                 WHEN 7 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
17785                 
17786                 ELSE null
17787               END                           source_value
17788             , CASE r
17789                 WHEN 6 THEN fvl9.meaning
17790                 WHEN 7 THEN fvl42.meaning
17791                 
17792                 ELSE null
17793               END               source_meaning
17794         FROM xla_events_gt     xet  
17795       , CST_XLA_INV_HEADERS_V  h1
17796       , CST_XLA_INV_REF_V  h3
17797       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
17798       , CST_XLA_INV_TXN_TYPES_REF_V  h5
17799   , fnd_lookup_values    fvl9
17800   , fnd_lookup_values    fvl42
17801             ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
17802        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
17803          AND xet.event_type_code = C_EVENT_TYPE_CODE
17804             AND h1.event_id = xet.event_id
17805  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id   AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
17806   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
17807   AND fvl9.view_application_id(+) = 700
17808   AND fvl9.language(+)            = USERENV('LANG')
17809      AND fvl42.lookup_type(+)         = 'YES_NO'
17810   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
17811   AND fvl42.view_application_id(+) = 0
17812   AND fvl42.language(+)            = USERENV('LANG')
17813   
17814 )
17815 ;
17816 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17817 
17818       trace
17819          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
17820          ,p_level    => C_LEVEL_STATEMENT
17821          ,p_module   => l_log_module);
17822 
17823 END IF;
17824 --
17825 
17826 
17827 
17828 --
17829 INSERT INTO xla_diag_sources --line1
17830 (
17831         event_id
17832       , ledger_id
17833       , sla_ledger_id
17834       , description_language
17835       , object_name
17836       , object_type_code
17837       , line_number
17838       , source_application_id
17839       , source_type_code
17840       , source_code
17841       , source_value
17842       , source_meaning
17843       , created_by
17844       , creation_date
17845       , last_update_date
17846       , last_updated_by
17847       , last_update_login
17848       , program_update_date
17849       , program_application_id
17850       , program_id
17851       , request_id
17852 )
17853 SELECT  event_id
17854       , p_target_ledger_id
17855       , p_sla_ledger_id
17856       , p_language
17857       , object_name
17858       , object_type_code
17859       , line_number
17860       , source_application_id
17861       , source_type_code
17862       , source_code
17863       , SUBSTR(source_value,1,1996)
17864       , SUBSTR(source_meaning,1,200)
17865       , xla_environment_pkg.g_Usr_Id
17866       , TRUNC(SYSDATE)
17867       , TRUNC(SYSDATE)
17868       , xla_environment_pkg.g_Usr_Id
17869       , xla_environment_pkg.g_Login_Id
17870       , TRUNC(SYSDATE)
17871       , xla_environment_pkg.g_Prog_Appl_Id
17872       , xla_environment_pkg.g_Prog_Id
17873       , xla_environment_pkg.g_Req_Id
17874   FROM (
17875        SELECT xet.event_id                  event_id
17876             , l2.line_number                 line_number
17877             , CASE r
17878                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
17879                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
17880                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
17881                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
17882                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
17883                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
17884                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
17885                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
17886                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
17887                 
17888                ELSE null
17889               END                           object_name
17890             , CASE r
17891                 WHEN 1 THEN 'LINE' 
17892                 WHEN 2 THEN 'LINE' 
17893                 WHEN 3 THEN 'LINE' 
17894                 WHEN 4 THEN 'LINE' 
17895                 WHEN 5 THEN 'LINE' 
17896                 WHEN 6 THEN 'LINE' 
17897                 WHEN 7 THEN 'LINE' 
17898                 WHEN 8 THEN 'LINE' 
17899                 WHEN 9 THEN 'LINE' 
17900                 
17901                 ELSE null
17902               END                           object_type_code
17903             , CASE r
17904                 WHEN 1 THEN '707' 
17905                 WHEN 2 THEN '707' 
17906                 WHEN 3 THEN '707' 
17907                 WHEN 4 THEN '707' 
17908                 WHEN 5 THEN '707' 
17909                 WHEN 6 THEN '707' 
17910                 WHEN 7 THEN '707' 
17911                 WHEN 8 THEN '707' 
17912                 WHEN 9 THEN '707' 
17913                 
17914                 ELSE null
17915               END                           source_application_id
17916             , 'S'             source_type_code
17917             , CASE r
17918                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
17919                 WHEN 2 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
17920                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
17921                 WHEN 4 THEN 'ENTERED_AMOUNT' 
17922                 WHEN 5 THEN 'CURRENCY_CODE' 
17923                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
17924                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
17925                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
17926                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
17927                 
17928                 ELSE null
17929               END                           source_code
17930             , CASE r
17931                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
17932                 WHEN 2 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
17933                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
17934                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
17935                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CODE)
17936                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
17937                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
17938                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
17939                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
17940                 
17941                 ELSE null
17942               END                           source_value
17943             , null              source_meaning
17944          FROM  xla_events_gt     xet  
17945         , CST_XLA_INV_LINES_V  l2
17946             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
17947         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
17948           AND xet.event_type_code = C_EVENT_TYPE_CODE
17949             AND l2.event_id          = xet.event_id
17950 
17951 )
17952 ;
17953 --
17954 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
17955 
17956       trace
17957          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
17958          ,p_level    => C_LEVEL_STATEMENT
17959          ,p_module   => l_log_module);
17960 
17961 END IF;
17962 
17963 
17964 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17965       trace
17966          (p_msg      => 'END of insert_sources_30'
17967          ,p_level    => C_LEVEL_PROCEDURE
17968          ,p_module   => l_log_module);
17969 END IF;
17970 EXCEPTION
17971   WHEN xla_exceptions_pkg.application_exception THEN
17972       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
17973             trace
17974                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
17975                ,p_level    => C_LEVEL_EXCEPTION
17976                ,p_module   => l_log_module);
17977       END IF;
17978       RAISE;
17979   WHEN OTHERS THEN
17980       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
17981             trace
17982                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
17983                ,p_level    => C_LEVEL_EXCEPTION
17984                ,p_module   => l_log_module);
17985        END IF;
17986        xla_exceptions_pkg.raise_message
17987            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_30');
17988 END insert_sources_30;
17989 --
17990 
17991 ---------------------------------------
17992 --
17993 -- PRIVATE FUNCTION
17994 --         EventType_30
17995 --
17996 ----------------------------------------
17997 --
17998 FUNCTION EventType_30
17999        (p_application_id         IN NUMBER
18000        ,p_base_ledger_id         IN NUMBER
18001        ,p_target_ledger_id       IN NUMBER
18002        ,p_language               IN VARCHAR2
18003        ,p_currency_code          IN VARCHAR2
18004        ,p_sla_ledger_id          IN NUMBER
18005        ,p_pad_start_date         IN DATE
18006        ,p_pad_end_date           IN DATE
18007        ,p_primary_ledger_id      IN NUMBER)
18008 RETURN BOOLEAN IS
18009 --
18010 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'EXP_REQ_RCPT_TP';
18011 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
18012 
18013 l_calculate_acctd_flag   VARCHAR2(1) :='N';
18014 l_calculate_g_l_flag     VARCHAR2(1) :='N';
18015 --
18016 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18017 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18018 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
18019 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18020 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18021 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
18022 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
18023 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18024 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18025 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18026 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18027 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18028 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18029 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
18030 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18031 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18032 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18033 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
18034 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18035 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18036 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18037 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
18038 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
18039 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
18040 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
18041 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
18042 
18043 l_event_id                             NUMBER;
18044 l_previous_event_id                    NUMBER;
18045 l_first_event_id                       NUMBER;
18046 l_last_event_id                        NUMBER;
18047 
18048 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
18049 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
18050 --
18051 --
18052 l_result                    BOOLEAN := TRUE;
18053 l_rows                      NUMBER  := 1000;
18054 l_event_type_name           VARCHAR2(80) := 'Internal Order Receipt into Expense, Transfer Pricing';
18055 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
18056 l_description               VARCHAR2(4000);
18057 l_transaction_reversal      NUMBER;
18058 l_ae_header_id              NUMBER;
18059 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
18060 l_log_module                VARCHAR2(240);
18061 --
18062 l_acct_reversal_source      VARCHAR2(30);
18063 l_trx_reversal_source       VARCHAR2(30);
18064 
18065 l_continue_with_lines       BOOLEAN := TRUE;
18066 --
18067 l_acc_rev_gl_date_source    DATE;                      -- 4262811
18068 --
18069 type t_array_event_id is table of number index by binary_integer;
18070 
18071 l_rec_array_event                    t_rec_array_event;
18072 l_null_rec_array_event               t_rec_array_event;
18073 l_array_ae_header_id                 xla_number_array_type;
18074 l_actual_flag                        VARCHAR2(1) := NULL;
18075 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
18076 l_balance_type_code                  VARCHAR2(1) :=NULL;
18077 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
18078 
18079 --
18080 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
18081 --
18082 
18083 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
18084 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
18085 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
18086 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
18087 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
18088 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
18089 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
18090 
18091 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
18092 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
18093 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
18094 TYPE t_array_source_10 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
18095 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
18096 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
18097 TYPE t_array_source_13 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
18098 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
18099 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
18100 
18101 l_array_source_1              t_array_source_1;
18102 l_array_source_2              t_array_source_2;
18103 l_array_source_3              t_array_source_3;
18104 l_array_source_4              t_array_source_4;
18105 l_array_source_5              t_array_source_5;
18106 l_array_source_9              t_array_source_9;
18107 l_array_source_9_meaning      t_array_lookup_meaning;
18108 l_array_source_42              t_array_source_42;
18109 l_array_source_42_meaning      t_array_lookup_meaning;
18110 
18111 l_array_source_6      t_array_source_6;
18112 l_array_source_7      t_array_source_7;
18113 l_array_source_8      t_array_source_8;
18114 l_array_source_10      t_array_source_10;
18115 l_array_source_11      t_array_source_11;
18116 l_array_source_12      t_array_source_12;
18117 l_array_source_13      t_array_source_13;
18118 l_array_source_14      t_array_source_14;
18119 l_array_source_15      t_array_source_15;
18120 
18121 --
18122 CURSOR header_cur
18123 IS
18124 SELECT /*+ leading(xet) cardinality(xet,1) */
18125 -- Event Type Code: EXP_REQ_RCPT_TP
18126 -- Event Class Code: INT_ORDER_TO_EXP
18127     xet.entity_id
18128   , xet.legal_entity_id
18129   , xet.entity_code
18130   , xet.transaction_number
18131   , xet.event_id
18132   , xet.event_class_code
18133   , xet.event_type_code
18134   , xet.event_number
18135   , xet.event_date
18136   , xet.transaction_date
18137   , xet.reference_num_1
18138   , xet.reference_num_2
18139   , xet.reference_num_3
18140   , xet.reference_num_4
18141   , xet.reference_char_1
18142   , xet.reference_char_2
18143   , xet.reference_char_3
18144   , xet.reference_char_4
18145   , xet.reference_date_1
18146   , xet.reference_date_2
18147   , xet.reference_date_3
18148   , xet.reference_date_4
18149   , xet.event_created_by
18150   , xet.budgetary_control_flag 
18151   , h1.TRANSACTION_ID    source_1
18152   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
18153   , h3.TRANSACTION_QUANTITY    source_3
18154   , h3.TRANSACTION_UOM    source_4
18155   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
18156   , h1.DISTRIBUTION_TYPE    source_9
18157   , fvl9.meaning   source_9_meaning
18158   , h1.TRANSFER_TO_GL_INDICATOR    source_42
18159   , fvl42.meaning   source_42_meaning
18160   FROM xla_events_gt     xet 
18161   , CST_XLA_INV_HEADERS_V  h1
18162   , CST_XLA_INV_REF_V  h3
18163   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
18164   , CST_XLA_INV_TXN_TYPES_REF_V  h5
18165   , fnd_lookup_values    fvl9
18166   , fnd_lookup_values    fvl42
18167  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
18168    and xet.event_type_code = C_EVENT_TYPE_CODE
18169    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
18170  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID   AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
18171   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
18172   AND fvl9.view_application_id(+) = 700
18173   AND fvl9.language(+)            = USERENV('LANG')
18174      AND fvl42.lookup_type(+)         = 'YES_NO'
18175   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
18176   AND fvl42.view_application_id(+) = 0
18177   AND fvl42.language(+)            = USERENV('LANG')
18178   
18179  ORDER BY event_id
18180 ;
18181 
18182 
18183 --
18184 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
18185 IS
18186 SELECT /*+ leading(xet) cardinality(xet,1) */
18187 -- Event Type Code: EXP_REQ_RCPT_TP
18188 -- Event Class Code: INT_ORDER_TO_EXP
18189     xet.entity_id
18190    ,xet.legal_entity_id
18191    ,xet.entity_code
18192    ,xet.transaction_number
18193    ,xet.event_id
18194    ,xet.event_class_code
18195    ,xet.event_type_code
18196    ,xet.event_number
18197    ,xet.event_date
18198    ,xet.transaction_date
18199    ,xet.reference_num_1
18200    ,xet.reference_num_2
18201    ,xet.reference_num_3
18202    ,xet.reference_num_4
18203    ,xet.reference_char_1
18204    ,xet.reference_char_2
18205    ,xet.reference_char_3
18206    ,xet.reference_char_4
18207    ,xet.reference_date_1
18208    ,xet.reference_date_2
18209    ,xet.reference_date_3
18210    ,xet.reference_date_4
18211    ,xet.event_created_by
18212    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
18213   , l2.CODE_COMBINATION_ID    source_6
18214   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
18215   , l2.DISTRIBUTION_IDENTIFIER    source_8
18216   , l2.ENTERED_AMOUNT    source_10
18217   , l2.CURRENCY_CODE    source_11
18218   , l2.CURRENCY_CONVERSION_DATE    source_12
18219   , l2.CURRENCY_CONVERSION_RATE    source_13
18220   , l2.CURRENCY_CONVERSION_TYPE    source_14
18221   , l2.ACCOUNTED_AMOUNT    source_15
18222   FROM xla_events_gt     xet 
18223   , CST_XLA_INV_LINES_V  l2
18224  WHERE xet.event_id between x_first_event_id and x_last_event_id
18225    and xet.event_date between p_pad_start_date and p_pad_end_date
18226    and xet.event_type_code = C_EVENT_TYPE_CODE
18227    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
18228 ;
18229 
18230 --
18231 BEGIN
18232 IF g_log_enabled THEN
18233    l_log_module := C_DEFAULT_MODULE||'.EventType_30';
18234 END IF;
18235 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18236    trace
18237       (p_msg      => 'BEGIN of EventType_30'
18238       ,p_level    => C_LEVEL_PROCEDURE
18239       ,p_module   => l_log_module);
18240 END IF;
18241 
18242 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18243    trace
18244       (p_msg      => 'p_application_id = '||p_application_id||
18245                      ' - p_base_ledger_id = '||p_base_ledger_id||
18246                      ' - p_target_ledger_id  = '||p_target_ledger_id||
18247                      ' - p_language = '||p_language||
18248                      ' - p_currency_code = '||p_currency_code||
18249                      ' - p_sla_ledger_id = '||p_sla_ledger_id
18250       ,p_level    => C_LEVEL_STATEMENT
18251       ,p_module   => l_log_module);
18252 END IF;
18253 --
18254 -- initialze arrays
18255 --
18256 g_array_event.DELETE;
18257 l_rec_array_event := l_null_rec_array_event;
18258 --
18259 --------------------------------------
18260 -- 4262811 Initialze MPA Line Number
18261 --------------------------------------
18262 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
18263 
18264 --
18265 
18266 --
18267 OPEN header_cur;
18268 --
18269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18270    trace
18271    (p_msg      => 'SQL - FETCH header_cur'
18272    ,p_level    => C_LEVEL_STATEMENT
18273    ,p_module   => l_log_module);
18274 END IF;
18275 --
18276 LOOP
18277 FETCH header_cur BULK COLLECT INTO
18278         l_array_entity_id
18279       , l_array_legal_entity_id
18280       , l_array_entity_code
18281       , l_array_transaction_num
18282       , l_array_event_id
18283       , l_array_class_code
18284       , l_array_event_type
18285       , l_array_event_number
18286       , l_array_event_date
18287       , l_array_transaction_date
18288       , l_array_reference_num_1
18289       , l_array_reference_num_2
18290       , l_array_reference_num_3
18291       , l_array_reference_num_4
18292       , l_array_reference_char_1
18293       , l_array_reference_char_2
18294       , l_array_reference_char_3
18295       , l_array_reference_char_4
18296       , l_array_reference_date_1
18297       , l_array_reference_date_2
18298       , l_array_reference_date_3
18299       , l_array_reference_date_4
18300       , l_array_event_created_by
18301       , l_array_budgetary_control_flag 
18302       , l_array_source_1
18303       , l_array_source_2
18304       , l_array_source_3
18305       , l_array_source_4
18306       , l_array_source_5
18307       , l_array_source_9
18308       , l_array_source_9_meaning
18309       , l_array_source_42
18310       , l_array_source_42_meaning
18311       LIMIT l_rows;
18312 --
18313 IF (C_LEVEL_EVENT >= g_log_level) THEN
18314    trace
18315    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
18316    ,p_level    => C_LEVEL_EVENT
18317    ,p_module   => l_log_module);
18318 END IF;
18319 --
18320 EXIT WHEN l_array_entity_id.COUNT = 0;
18321 
18322 -- initialize arrays
18323 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
18324 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
18325 
18326 --
18327 -- Bug 4458708
18328 --
18329 XLA_AE_LINES_PKG.g_LineNumber := 0;
18330 
18331 
18332 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
18333 g_last_hdr_idx := l_array_event_id.LAST;
18334 --
18335 -- loop for the headers. Each iteration is for each header extract row
18336 -- fetched in header cursor
18337 --
18338 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
18339 
18340 --
18341 -- set event info as cache for other routines to refer event attributes
18342 --
18343 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
18344    (p_application_id           => p_application_id
18345    ,p_primary_ledger_id        => p_primary_ledger_id
18346    ,p_base_ledger_id           => p_base_ledger_id
18347    ,p_target_ledger_id         => p_target_ledger_id
18348    ,p_entity_id                => l_array_entity_id(hdr_idx)
18349    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
18350    ,p_entity_code              => l_array_entity_code(hdr_idx)
18351    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
18352    ,p_event_id                 => l_array_event_id(hdr_idx)
18353    ,p_event_class_code         => l_array_class_code(hdr_idx)
18354    ,p_event_type_code          => l_array_event_type(hdr_idx)
18355    ,p_event_number             => l_array_event_number(hdr_idx)
18356    ,p_event_date               => l_array_event_date(hdr_idx)
18357    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
18358    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
18359    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
18360    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
18361    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
18362    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
18363    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
18364    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
18365    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
18366    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
18367    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
18368    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
18369    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
18370    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
18371    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
18372 
18373 --
18374 -- set the status of entry to C_VALID (0)
18375 --
18376 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
18377 
18378 --
18379 -- initialize a row for ae header
18380 --
18381 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
18382 
18383 l_event_id := l_array_event_id(hdr_idx);
18384 
18385 --
18386 -- storing the hdr_idx for event. May be used by line cursor.
18387 --
18388 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
18389 
18390 --
18391 -- store sources from header extract. This can be improved to
18392 -- store only those sources from header extract that may be used in lines
18393 --
18394 
18395 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
18396 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
18397 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
18398 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
18399 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
18400 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
18401 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
18402 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
18403 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
18404 
18405 --
18406 -- initilaize the status of ae headers for diffrent balance types
18407 -- the status is initialised to C_NOT_CREATED (2)
18408 --
18409 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
18410 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
18411 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
18412 
18413 --
18414 -- call api to validate and store accounting attributes for header
18415 --
18416 
18417 ------------------------------------------------------------
18418 -- Accrual Reversal : to get date for Standard Source (NONE)
18419 ------------------------------------------------------------
18420 l_acc_rev_gl_date_source := NULL;
18421 
18422      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
18423       l_rec_acct_attrs.array_date_value(1) := 
18424 xla_ae_sources_pkg.GetSystemSourceDate(
18425    p_source_code           => 'XLA_REFERENCE_DATE_1'
18426  , p_source_type_code      => 'Y'
18427  , p_source_application_id =>  602
18428 );
18429      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
18430       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_42');
18431 
18432 
18433 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
18434 
18435 XLA_AE_HEADER_PKG.SetJeCategoryName;
18436 
18437 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
18438 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
18439 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
18440 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
18441 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
18442 
18443 
18444 --
18445 xla_ae_header_pkg.SetHdrDescription(
18446    p_description => Description_1 (
18447    p_application_id => p_application_id 
18448  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
18449  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
18450  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
18451  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
18452  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
18453    )
18454 );
18455 --
18456 
18457 -- No header level analytical criteria
18458 
18459 --
18460 --accounting attribute enhancement, bug 3612931
18461 --
18462 l_trx_reversal_source := SUBSTR(NULL, 1,30);
18463 
18464 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
18465    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
18466 
18467    xla_accounting_err_pkg.build_message
18468       (p_appli_s_name            => 'XLA'
18469       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
18470       ,p_token_1                 => 'ACCT_ATTR_NAME'
18471       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
18472       ,p_token_2                 => 'PRODUCT_NAME'
18473       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
18474       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
18475       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
18476       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
18477 
18478 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
18479    --
18480    -- following sets the accounting attributes needed to reverse
18481    -- accounting for a distributeion
18482    --
18483    xla_ae_lines_pkg.SetTrxReversalAttrs
18484       (p_event_id              => l_event_id
18485       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
18486       ,p_trx_reversal_source   => l_trx_reversal_source);
18487 
18488 END IF;
18489 
18490 
18491 ----------------------------------------------------------------
18492 -- 4262811 -  update the header statuses to invalid in need be
18493 ----------------------------------------------------------------
18494 --
18495 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
18496 
18497 
18498   -----------------------------------------------
18499   -- No accrual reversal for the event class/type
18500   -----------------------------------------------
18501 ----------------------------------------------------------------
18502 
18503 --
18504 -- this ends the header loop iteration for one bulk fetch
18505 --
18506 END LOOP;
18507 
18508 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
18509 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
18510 
18511 --
18512 -- insert dummy rows into lines gt table that were created due to
18513 -- transaction reversals
18514 --
18515 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
18516    l_result := XLA_AE_LINES_PKG.InsertLines;
18517 END IF;
18518 
18519 --
18520 -- reset the temp_line_num for each set of events fetched from header
18521 -- cursor rather than doing it for each new event in line cursor
18522 -- Bug 3939231
18523 --
18524 xla_ae_lines_pkg.g_temp_line_num := 0;
18525 
18526 
18527 
18528 --
18529 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
18530 --
18531 --
18532 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18533 
18534       trace
18535          (p_msg      => 'SQL - FETCH line_cur'
18536          ,p_level    => C_LEVEL_STATEMENT
18537          ,p_module   => l_log_module);
18538 
18539 END IF;
18540 --
18541 --
18542 LOOP
18543   --
18544   FETCH line_cur BULK COLLECT INTO
18545         l_array_entity_id
18546       , l_array_legal_entity_id
18547       , l_array_entity_code
18548       , l_array_transaction_num
18549       , l_array_event_id
18550       , l_array_class_code
18551       , l_array_event_type
18552       , l_array_event_number
18553       , l_array_event_date
18554       , l_array_transaction_date
18555       , l_array_reference_num_1
18556       , l_array_reference_num_2
18557       , l_array_reference_num_3
18558       , l_array_reference_num_4
18559       , l_array_reference_char_1
18560       , l_array_reference_char_2
18561       , l_array_reference_char_3
18562       , l_array_reference_char_4
18563       , l_array_reference_date_1
18564       , l_array_reference_date_2
18565       , l_array_reference_date_3
18566       , l_array_reference_date_4
18567       , l_array_event_created_by
18568       , l_array_budgetary_control_flag
18569       , l_array_extract_line_num 
18570       , l_array_source_6
18571       , l_array_source_7
18572       , l_array_source_8
18573       , l_array_source_10
18574       , l_array_source_11
18575       , l_array_source_12
18576       , l_array_source_13
18577       , l_array_source_14
18578       , l_array_source_15
18579       LIMIT l_rows;
18580 
18581   --
18582   IF (C_LEVEL_EVENT >= g_log_level) THEN
18583             trace
18584                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
18585                ,p_level    => C_LEVEL_EVENT
18586                ,p_module   => l_log_module);
18587   END IF;
18588   --
18589   EXIT WHEN l_array_entity_id.count = 0;
18590 
18591   XLA_AE_LINES_PKG.g_rec_lines := null;
18592 
18593 --
18594 -- Bug 4458708
18595 --
18596 XLA_AE_LINES_PKG.g_LineNumber := 0;
18597 --
18598 --
18599 
18600 FOR Idx IN 1..l_array_event_id.count LOOP
18601    --
18602    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
18603    --
18604    l_event_id := l_array_event_id(idx);  -- 5648433
18605 
18606    --
18607    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
18608    --
18609 
18610    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
18611              (g_array_event(l_event_id).array_value_num('header_index'))
18612          ,'N'
18613          ) <> 'Y'
18614    THEN
18615       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18616          trace
18617             (p_msg      => 'Trancaction revesal option is not Y '
18618             ,p_level    => C_LEVEL_STATEMENT
18619             ,p_module   => l_log_module);
18620       END IF;
18621 
18622 --
18623 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
18624 --
18625 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
18626 --
18627 -- set event info as cache for other routines to refer event attributes
18628 --
18629 
18630 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
18631    l_previous_event_id := l_event_id;
18632 
18633    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
18634       (p_application_id           => p_application_id
18635       ,p_primary_ledger_id        => p_primary_ledger_id
18636       ,p_base_ledger_id           => p_base_ledger_id
18637       ,p_target_ledger_id         => p_target_ledger_id
18638       ,p_entity_id                => l_array_entity_id(Idx)
18639       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
18640       ,p_entity_code              => l_array_entity_code(Idx)
18641       ,p_transaction_num          => l_array_transaction_num(Idx)
18642       ,p_event_id                 => l_array_event_id(Idx)
18643       ,p_event_class_code         => l_array_class_code(Idx)
18644       ,p_event_type_code          => l_array_event_type(Idx)
18645       ,p_event_number             => l_array_event_number(Idx)
18646       ,p_event_date               => l_array_event_date(Idx)
18647       ,p_transaction_date         => l_array_transaction_date(Idx)
18648       ,p_reference_num_1          => l_array_reference_num_1(Idx)
18649       ,p_reference_num_2          => l_array_reference_num_2(Idx)
18650       ,p_reference_num_3          => l_array_reference_num_3(Idx)
18651       ,p_reference_num_4          => l_array_reference_num_4(Idx)
18652       ,p_reference_char_1         => l_array_reference_char_1(Idx)
18653       ,p_reference_char_2         => l_array_reference_char_2(Idx)
18654       ,p_reference_char_3         => l_array_reference_char_3(Idx)
18655       ,p_reference_char_4         => l_array_reference_char_4(Idx)
18656       ,p_reference_date_1         => l_array_reference_date_1(Idx)
18657       ,p_reference_date_2         => l_array_reference_date_2(Idx)
18658       ,p_reference_date_3         => l_array_reference_date_3(Idx)
18659       ,p_reference_date_4         => l_array_reference_date_4(Idx)
18660       ,p_event_created_by         => l_array_event_created_by(Idx)
18661       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
18662        --
18663 END IF;
18664 
18665 
18666 
18667 --
18668 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
18669 
18670 l_acct_reversal_source := SUBSTR(NULL, 1,30);
18671 
18672 IF l_continue_with_lines THEN
18673    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
18674       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
18675 
18676       xla_accounting_err_pkg.build_message
18677          (p_appli_s_name            => 'XLA'
18678          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
18679          ,p_token_1                 => 'LINE_NUMBER'
18680          ,p_value_1                 => l_array_extract_line_num(Idx)
18681          ,p_token_2                 => 'PRODUCT_NAME'
18682          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
18683          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
18684          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
18685          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
18686 
18687    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
18688       --
18689       -- following sets the accounting attributes needed to reverse
18690       -- accounting for a distributeion
18691       --
18692 
18693       --
18694       -- 5217187
18695       --
18696       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
18697       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
18698                                        g_array_event(l_event_id).array_value_num('header_index'));
18699       --
18700       --
18701 
18702       -- No reversal code generated
18703 
18704       xla_ae_lines_pkg.SetAcctReversalAttrs
18705          (p_event_id             => l_event_id
18706          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
18707          ,p_calculate_acctd_flag => l_calculate_acctd_flag
18708          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
18709    END IF;
18710 
18711    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
18712        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
18713 
18714 --
18715 AcctLineType_3 (
18716  p_application_id  => p_application_id
18717  ,p_event_id     => l_event_id
18718  ,p_calculate_acctd_flag => l_calculate_acctd_flag
18719  ,p_calculate_g_l_flag => l_calculate_g_l_flag
18720  ,p_actual_flag => l_actual_flag
18721  ,p_balance_type_code => l_balance_type_code
18722  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
18723  
18724  , p_source_6 => l_array_source_6(Idx)
18725  , p_source_7 => l_array_source_7(Idx)
18726  , p_source_8 => l_array_source_8(Idx)
18727  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
18728  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
18729  , p_source_10 => l_array_source_10(Idx)
18730  , p_source_11 => l_array_source_11(Idx)
18731  , p_source_12 => l_array_source_12(Idx)
18732  , p_source_13 => l_array_source_13(Idx)
18733  , p_source_14 => l_array_source_14(Idx)
18734  , p_source_15 => l_array_source_15(Idx)
18735  );
18736 If(l_balance_type_code = 'A') THEN
18737   l_actual_gain_loss_ref := l_gain_or_loss_ref;
18738 END IF;
18739 
18740 --
18741 
18742       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
18743       -- or secondary ledger that has different currency with primary
18744       -- or alc that is calculated by sla
18745       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
18746             (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'))
18747 
18748 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
18749 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
18750           AND (l_actual_flag = 'A')) THEN
18751         XLA_AE_LINES_PKG.CreateGainOrLossLines(
18752           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
18753          ,p_application_id   => p_application_id
18754          ,p_amb_context_code => 'DEFAULT'
18755          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
18756          ,p_event_class_code => C_EVENT_CLASS_CODE
18757          ,p_event_type_code  => C_EVENT_TYPE_CODE
18758          
18759          ,p_gain_ccid        => -1
18760          ,p_loss_ccid        => -1
18761 
18762          ,p_actual_flag      => l_actual_flag
18763          ,p_enc_flag         => null
18764          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
18765          ,p_enc_g_l_ref      => null
18766          );
18767       END IF;
18768    END IF;
18769 END IF;
18770 
18771    ELSE
18772       --
18773       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
18774       --
18775       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18776          trace
18777             (p_msg      => 'Trancaction revesal option is Y'
18778             ,p_level    => C_LEVEL_STATEMENT
18779             ,p_module   => l_log_module);
18780       END IF;
18781    END IF;
18782 
18783 END LOOP;
18784 l_result := XLA_AE_LINES_PKG.InsertLines ;
18785 end loop;
18786 close line_cur;
18787 
18788 
18789 --
18790 -- insert headers into xla_ae_headers_gt table
18791 --
18792 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
18793 
18794 -- insert into errors table here.
18795 
18796 END LOOP;
18797 
18798 --
18799 -- 4865292
18800 --
18801 -- Compare g_hdr_extract_count with event count in
18802 -- CreateHeadersAndLines.
18803 --
18804 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
18805 
18806 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18807    trace (p_msg     => '# rows extracted from header extract objects '
18808                     || ' (running total): '
18809                     || g_hdr_extract_count
18810          ,p_level   => C_LEVEL_STATEMENT
18811          ,p_module  => l_log_module);
18812 END IF;
18813 
18814 CLOSE header_cur;
18815 --
18816 
18817 --
18818 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18819    trace
18820       (p_msg      => 'END of EventType_30'
18821       ,p_level    => C_LEVEL_PROCEDURE
18822       ,p_module   => l_log_module);
18823 END IF;
18824 --
18825 RETURN l_result;
18826 EXCEPTION
18827 WHEN xla_exceptions_pkg.application_exception THEN
18828    
18829 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
18830 
18831    
18832 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
18833 
18834    RAISE;
18835 
18836 WHEN NO_DATA_FOUND THEN
18837 
18838 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
18839 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
18840 
18841 FOR header_record IN header_cur
18842 LOOP
18843     l_array_header_events(header_record.event_id) := header_record.event_id;
18844 END LOOP;
18845 
18846 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
18847 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
18848 
18849 fnd_file.put_line(fnd_file.LOG, '                    ');
18850 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
18851 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
18852 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
18853 
18854 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
18855 LOOP
18856 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
18857 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
18858         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
18859 	END IF;
18860 END LOOP;
18861 
18862 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
18863 fnd_file.put_line(fnd_file.LOG, '                    ');
18864 
18865 
18866 xla_exceptions_pkg.raise_message
18867       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_30');
18868 
18869 
18870 WHEN OTHERS THEN
18871    xla_exceptions_pkg.raise_message
18872       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_30');
18873 END EventType_30;
18874 --
18875 
18876 ---------------------------------------
18877 --
18878 -- PRIVATE PROCEDURE
18879 --         insert_sources_31
18880 --
18881 ----------------------------------------
18882 --
18883 PROCEDURE insert_sources_31(
18884                                 p_target_ledger_id       IN NUMBER
18885                               , p_language               IN VARCHAR2
18886                               , p_sla_ledger_id          IN NUMBER
18887                               , p_pad_start_date         IN DATE
18888                               , p_pad_end_date           IN DATE
18889                          )
18890 IS
18891 
18892 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
18893 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
18894 p_apps_owner                   VARCHAR2(30);
18895 l_log_module                   VARCHAR2(240);
18896 BEGIN
18897 IF g_log_enabled THEN
18898       l_log_module := C_DEFAULT_MODULE||'.insert_sources_31';
18899 END IF;
18900 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18901 
18902       trace
18903          (p_msg      => 'BEGIN of insert_sources_31'
18904          ,p_level    => C_LEVEL_PROCEDURE
18905          ,p_module   => l_log_module);
18906 
18907 END IF;
18908 
18909 -- select APPS owner
18910 SELECT oracle_username
18911   INTO p_apps_owner
18912   FROM fnd_oracle_userid
18913  WHERE read_only_flag = 'U'
18914 ;
18915 
18916 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
18917       trace
18918          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
18919                         ' - p_language = '||p_language||
18920                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
18921                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
18922                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
18923                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
18924          ,p_level    => C_LEVEL_STATEMENT
18925          ,p_module   => l_log_module);
18926 END IF;
18927 
18928 
18929 --
18930 INSERT INTO xla_diag_sources --hdr1
18931 (
18932         event_id
18933       , ledger_id
18934       , sla_ledger_id
18935       , description_language
18936       , object_name
18937       , object_type_code
18938       , line_number
18939       , source_application_id
18940       , source_type_code
18941       , source_code
18942       , source_value
18943       , source_meaning
18944       , created_by
18945       , creation_date
18946       , last_update_date
18947       , last_updated_by
18948       , last_update_login
18949       , program_update_date
18950       , program_application_id
18951       , program_id
18952       , request_id
18953 )
18954 SELECT
18955         event_id
18956       , p_target_ledger_id
18957       , p_sla_ledger_id
18958       , p_language
18959       , object_name
18960       , object_type_code
18961       , line_number
18962       , source_application_id
18963       , source_type_code
18964       , source_code
18965       , SUBSTR(source_value ,1,1996)
18966       , SUBSTR(source_meaning,1,200)
18967       , xla_environment_pkg.g_Usr_Id
18968       , TRUNC(SYSDATE)
18969       , TRUNC(SYSDATE)
18970       , xla_environment_pkg.g_Usr_Id
18971       , xla_environment_pkg.g_Login_Id
18972       , TRUNC(SYSDATE)
18973       , xla_environment_pkg.g_Prog_Appl_Id
18974       , xla_environment_pkg.g_Prog_Id
18975       , xla_environment_pkg.g_Req_Id
18976   FROM (
18977        SELECT xet.event_id                  event_id
18978             , 0                             line_number
18979             , CASE r
18980                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
18981                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
18982                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
18983                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
18984                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
18985                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
18986                 WHEN 7 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
18987                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
18988                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
18989                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
18990                 WHEN 11 THEN 'PSA_CST_XLA_UPG_V' 
18991                 WHEN 12 THEN 'PO_REQ_HEADERS_REF_V' 
18992                 WHEN 13 THEN 'PO_REQ_DISTS_REF_V' 
18993                 WHEN 14 THEN 'CST_XLA_INV_REF_V' 
18994                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
18995                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
18996                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
18997                 WHEN 18 THEN 'PO_REQ_DISTS_REF_V' 
18998                 WHEN 19 THEN 'PO_REQ_HEADERS_REF_V' 
18999                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
19000                 
19001                ELSE null
19002               END                           object_name
19003             , CASE r
19004                 WHEN 1 THEN 'HEADER' 
19005                 WHEN 2 THEN 'HEADER' 
19006                 WHEN 3 THEN 'HEADER' 
19007                 WHEN 4 THEN 'HEADER' 
19008                 WHEN 5 THEN 'HEADER' 
19009                 WHEN 6 THEN 'HEADER' 
19010                 WHEN 7 THEN 'HEADER' 
19011                 WHEN 8 THEN 'HEADER' 
19012                 WHEN 9 THEN 'HEADER' 
19013                 WHEN 10 THEN 'HEADER' 
19014                 WHEN 11 THEN 'HEADER' 
19015                 WHEN 12 THEN 'HEADER' 
19016                 WHEN 13 THEN 'HEADER' 
19017                 WHEN 14 THEN 'HEADER' 
19018                 WHEN 15 THEN 'HEADER' 
19019                 WHEN 16 THEN 'HEADER' 
19020                 WHEN 17 THEN 'HEADER' 
19021                 WHEN 18 THEN 'HEADER' 
19022                 WHEN 19 THEN 'HEADER' 
19023                 WHEN 20 THEN 'HEADER' 
19024                 
19025                 ELSE null
19026               END                           object_type_code
19027             , CASE r
19028                 WHEN 1 THEN '707' 
19029                 WHEN 2 THEN '707' 
19030                 WHEN 3 THEN '707' 
19031                 WHEN 4 THEN '707' 
19032                 WHEN 5 THEN '707' 
19033                 WHEN 6 THEN '707' 
19034                 WHEN 7 THEN '707' 
19035                 WHEN 8 THEN '707' 
19036                 WHEN 9 THEN '707' 
19037                 WHEN 10 THEN '707' 
19038                 WHEN 11 THEN '707' 
19039                 WHEN 12 THEN '201' 
19040                 WHEN 13 THEN '201' 
19041                 WHEN 14 THEN '707' 
19042                 WHEN 15 THEN '707' 
19043                 WHEN 16 THEN '707' 
19044                 WHEN 17 THEN '707' 
19045                 WHEN 18 THEN '201' 
19046                 WHEN 19 THEN '201' 
19047                 WHEN 20 THEN '707' 
19048                 
19049                 ELSE null
19050               END                           source_application_id
19051             , 'S'             source_type_code
19052             , CASE r
19053                 WHEN 1 THEN 'TRANSACTION_ID' 
19054                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
19055                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
19056                 WHEN 4 THEN 'TRANSACTION_UOM' 
19057                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
19058                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
19059                 WHEN 7 THEN 'ENCUMBRANCE_REVERSAL_FLAG' 
19060                 WHEN 8 THEN 'APPLIED_TO_APPL_ID' 
19061                 WHEN 9 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
19062                 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
19063                 WHEN 11 THEN 'CST_ENCUM_UPG_OPTION' 
19064                 WHEN 12 THEN 'REQ_ENCUMBRANCE_FLAG' 
19065                 WHEN 13 THEN 'REQ_RESERVED_FLAG' 
19066                 WHEN 14 THEN 'BUS_FLOW_REQ_DIST_TYPE' 
19067                 WHEN 15 THEN 'BUS_FLOW_REQ_ENTITY_CODE' 
19068                 WHEN 16 THEN 'BUS_FLOW_REQ_DIST_ID' 
19069                 WHEN 17 THEN 'BUS_FLOW_REQ_ID' 
19070                 WHEN 18 THEN 'REQ_BUDGET_ACCOUNT' 
19071                 WHEN 19 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
19072                 WHEN 20 THEN 'TRANSFER_TO_GL_INDICATOR' 
19073                 
19074                 ELSE null
19075               END                           source_code
19076             , CASE r
19077                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
19078                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
19079                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
19080                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
19081                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
19082                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
19083                 WHEN 7 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_FLAG)
19084                 WHEN 8 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
19085                 WHEN 9 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
19086                 WHEN 10 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
19087                 WHEN 11 THEN TO_CHAR(h9.CST_ENCUM_UPG_OPTION)
19088                 WHEN 12 THEN TO_CHAR(h8.REQ_ENCUMBRANCE_FLAG)
19089                 WHEN 13 THEN TO_CHAR(h7.REQ_RESERVED_FLAG)
19090                 WHEN 14 THEN TO_CHAR(h4.BUS_FLOW_REQ_DIST_TYPE)
19091                 WHEN 15 THEN TO_CHAR(h4.BUS_FLOW_REQ_ENTITY_CODE)
19092                 WHEN 16 THEN TO_CHAR(h4.BUS_FLOW_REQ_DIST_ID)
19093                 WHEN 17 THEN TO_CHAR(h4.BUS_FLOW_REQ_ID)
19094                 WHEN 18 THEN TO_CHAR(h7.REQ_BUDGET_ACCOUNT)
19095                 WHEN 19 THEN TO_CHAR(h8.REQ_ENCUMBRANCE_TYPE_ID)
19096                 WHEN 20 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
19097                 
19098                 ELSE null
19099               END                           source_value
19100             , CASE r
19101                 WHEN 6 THEN fvl9.meaning
19102                 WHEN 20 THEN fvl42.meaning
19103                 
19104                 ELSE null
19105               END               source_meaning
19106         FROM xla_events_gt     xet  
19107       , CST_XLA_INV_HEADERS_V  h1
19108       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
19109       , CST_XLA_INV_REF_V  h4
19110       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
19111       , CST_XLA_INV_TXN_TYPES_REF_V  h6
19112       , PO_REQ_DISTS_REF_V  h7
19113       , PO_REQ_HEADERS_REF_V  h8
19114       , PSA_CST_XLA_UPG_V  h9
19115   , fnd_lookup_values    fvl9
19116   , fnd_lookup_values    fvl42
19117             ,(select rownum r from all_objects where rownum <= 20 and owner = p_apps_owner)
19118        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
19119          AND xet.event_type_code = C_EVENT_TYPE_CODE
19120             AND h1.event_id = xet.event_id
19121  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id = h1.inventory_item_id and h5.organization_id = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h4.bus_flow_req_dist_id=h7.req_distribution_id (+)  AND h4.bus_flow_req_id = h8.req_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
19122   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
19123   AND fvl9.view_application_id(+) = 700
19124   AND fvl9.language(+)            = USERENV('LANG')
19125      AND fvl42.lookup_type(+)         = 'YES_NO'
19126   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
19127   AND fvl42.view_application_id(+) = 0
19128   AND fvl42.language(+)            = USERENV('LANG')
19129   
19130 )
19131 ;
19132 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19133 
19134       trace
19135          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
19136          ,p_level    => C_LEVEL_STATEMENT
19137          ,p_module   => l_log_module);
19138 
19139 END IF;
19140 --
19141 
19142 
19143 
19144 --
19145 INSERT INTO xla_diag_sources --line1
19146 (
19147         event_id
19148       , ledger_id
19149       , sla_ledger_id
19150       , description_language
19151       , object_name
19152       , object_type_code
19153       , line_number
19154       , source_application_id
19155       , source_type_code
19156       , source_code
19157       , source_value
19158       , source_meaning
19159       , created_by
19160       , creation_date
19161       , last_update_date
19162       , last_updated_by
19163       , last_update_login
19164       , program_update_date
19165       , program_application_id
19166       , program_id
19167       , request_id
19168 )
19169 SELECT  event_id
19170       , p_target_ledger_id
19171       , p_sla_ledger_id
19172       , p_language
19173       , object_name
19174       , object_type_code
19175       , line_number
19176       , source_application_id
19177       , source_type_code
19178       , source_code
19179       , SUBSTR(source_value,1,1996)
19180       , SUBSTR(source_meaning,1,200)
19181       , xla_environment_pkg.g_Usr_Id
19182       , TRUNC(SYSDATE)
19183       , TRUNC(SYSDATE)
19184       , xla_environment_pkg.g_Usr_Id
19185       , xla_environment_pkg.g_Login_Id
19186       , TRUNC(SYSDATE)
19187       , xla_environment_pkg.g_Prog_Appl_Id
19188       , xla_environment_pkg.g_Prog_Id
19189       , xla_environment_pkg.g_Req_Id
19190   FROM (
19191        SELECT xet.event_id                  event_id
19192             , l2.line_number                 line_number
19193             , CASE r
19194                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
19195                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
19196                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
19197                 
19198                ELSE null
19199               END                           object_name
19200             , CASE r
19201                 WHEN 1 THEN 'LINE' 
19202                 WHEN 2 THEN 'LINE' 
19203                 WHEN 3 THEN 'LINE' 
19204                 
19205                 ELSE null
19206               END                           object_type_code
19207             , CASE r
19208                 WHEN 1 THEN '707' 
19209                 WHEN 2 THEN '707' 
19210                 WHEN 3 THEN '707' 
19211                 
19212                 ELSE null
19213               END                           source_application_id
19214             , 'S'             source_type_code
19215             , CASE r
19216                 WHEN 1 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
19217                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
19218                 WHEN 3 THEN 'CURRENCY_CODE' 
19219                 
19220                 ELSE null
19221               END                           source_code
19222             , CASE r
19223                 WHEN 1 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
19224                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
19225                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
19226                 
19227                 ELSE null
19228               END                           source_value
19229             , null              source_meaning
19230          FROM  xla_events_gt     xet  
19231         , CST_XLA_INV_LINES_V  l2
19232             ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
19233         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
19234           AND xet.event_type_code = C_EVENT_TYPE_CODE
19235             AND l2.event_id          = xet.event_id
19236 
19237 )
19238 ;
19239 --
19240 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19241 
19242       trace
19243          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
19244          ,p_level    => C_LEVEL_STATEMENT
19245          ,p_module   => l_log_module);
19246 
19247 END IF;
19248 
19249 
19250 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19251       trace
19252          (p_msg      => 'END of insert_sources_31'
19253          ,p_level    => C_LEVEL_PROCEDURE
19254          ,p_module   => l_log_module);
19255 END IF;
19256 EXCEPTION
19257   WHEN xla_exceptions_pkg.application_exception THEN
19258       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
19259             trace
19260                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
19261                ,p_level    => C_LEVEL_EXCEPTION
19262                ,p_module   => l_log_module);
19263       END IF;
19264       RAISE;
19265   WHEN OTHERS THEN
19266       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
19267             trace
19268                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
19269                ,p_level    => C_LEVEL_EXCEPTION
19270                ,p_module   => l_log_module);
19271        END IF;
19272        xla_exceptions_pkg.raise_message
19273            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_31');
19274 END insert_sources_31;
19275 --
19276 
19277 ---------------------------------------
19278 --
19279 -- PRIVATE FUNCTION
19280 --         EventType_31
19281 --
19282 ----------------------------------------
19283 --
19284 FUNCTION EventType_31
19285        (p_application_id         IN NUMBER
19286        ,p_base_ledger_id         IN NUMBER
19287        ,p_target_ledger_id       IN NUMBER
19288        ,p_language               IN VARCHAR2
19289        ,p_currency_code          IN VARCHAR2
19290        ,p_sla_ledger_id          IN NUMBER
19291        ,p_pad_start_date         IN DATE
19292        ,p_pad_end_date           IN DATE
19293        ,p_primary_ledger_id      IN NUMBER)
19294 RETURN BOOLEAN IS
19295 --
19296 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_NO_TP';
19297 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
19298 
19299 l_calculate_acctd_flag   VARCHAR2(1) :='N';
19300 l_calculate_g_l_flag     VARCHAR2(1) :='N';
19301 --
19302 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19303 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19304 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
19305 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19306 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19307 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
19308 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
19309 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19310 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19311 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19312 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19313 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19314 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19315 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
19316 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19317 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19318 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19319 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
19320 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19321 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19322 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19323 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
19324 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
19325 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
19326 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
19327 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
19328 
19329 l_event_id                             NUMBER;
19330 l_previous_event_id                    NUMBER;
19331 l_first_event_id                       NUMBER;
19332 l_last_event_id                        NUMBER;
19333 
19334 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
19335 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
19336 --
19337 --
19338 l_result                    BOOLEAN := TRUE;
19339 l_rows                      NUMBER  := 1000;
19340 l_event_type_name           VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt, no Transfer Pricing';
19341 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
19342 l_description               VARCHAR2(4000);
19343 l_transaction_reversal      NUMBER;
19344 l_ae_header_id              NUMBER;
19345 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
19346 l_log_module                VARCHAR2(240);
19347 --
19348 l_acct_reversal_source      VARCHAR2(30);
19349 l_trx_reversal_source       VARCHAR2(30);
19350 
19351 l_continue_with_lines       BOOLEAN := TRUE;
19352 --
19353 l_acc_rev_gl_date_source    DATE;                      -- 4262811
19354 --
19355 type t_array_event_id is table of number index by binary_integer;
19356 
19357 l_rec_array_event                    t_rec_array_event;
19358 l_null_rec_array_event               t_rec_array_event;
19359 l_array_ae_header_id                 xla_number_array_type;
19360 l_actual_flag                        VARCHAR2(1) := NULL;
19361 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
19362 l_balance_type_code                  VARCHAR2(1) :=NULL;
19363 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
19364 
19365 --
19366 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
19367 --
19368 
19369 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
19370 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
19371 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
19372 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
19373 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
19374 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
19375 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.ENCUMBRANCE_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
19376 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
19377 TYPE t_array_source_25 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
19378 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
19379 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
19380 TYPE t_array_source_33 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
19381 TYPE t_array_source_34 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
19382 TYPE t_array_source_35 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
19383 TYPE t_array_source_36 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
19384 TYPE t_array_source_37 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
19385 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_ID%TYPE INDEX BY BINARY_INTEGER;
19386 TYPE t_array_source_39 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
19387 TYPE t_array_source_40 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
19388 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
19389 
19390 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
19391 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
19392 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
19393 
19394 l_array_source_1              t_array_source_1;
19395 l_array_source_2              t_array_source_2;
19396 l_array_source_3              t_array_source_3;
19397 l_array_source_4              t_array_source_4;
19398 l_array_source_5              t_array_source_5;
19399 l_array_source_9              t_array_source_9;
19400 l_array_source_9_meaning      t_array_lookup_meaning;
19401 l_array_source_17              t_array_source_17;
19402 l_array_source_19              t_array_source_19;
19403 l_array_source_25              t_array_source_25;
19404 l_array_source_26              t_array_source_26;
19405 l_array_source_27              t_array_source_27;
19406 l_array_source_33              t_array_source_33;
19407 l_array_source_34              t_array_source_34;
19408 l_array_source_35              t_array_source_35;
19409 l_array_source_36              t_array_source_36;
19410 l_array_source_37              t_array_source_37;
19411 l_array_source_38              t_array_source_38;
19412 l_array_source_39              t_array_source_39;
19413 l_array_source_40              t_array_source_40;
19414 l_array_source_42              t_array_source_42;
19415 l_array_source_42_meaning      t_array_lookup_meaning;
19416 
19417 l_array_source_7      t_array_source_7;
19418 l_array_source_8      t_array_source_8;
19419 l_array_source_11      t_array_source_11;
19420 
19421 --
19422 CURSOR header_cur
19423 IS
19424 SELECT /*+ leading(xet) cardinality(xet,1) */
19425 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_NO_TP
19426 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
19427     xet.entity_id
19428   , xet.legal_entity_id
19429   , xet.entity_code
19430   , xet.transaction_number
19431   , xet.event_id
19432   , xet.event_class_code
19433   , xet.event_type_code
19434   , xet.event_number
19435   , xet.event_date
19436   , xet.transaction_date
19437   , xet.reference_num_1
19438   , xet.reference_num_2
19439   , xet.reference_num_3
19440   , xet.reference_num_4
19441   , xet.reference_char_1
19442   , xet.reference_char_2
19443   , xet.reference_char_3
19444   , xet.reference_char_4
19445   , xet.reference_date_1
19446   , xet.reference_date_2
19447   , xet.reference_date_3
19448   , xet.reference_date_4
19449   , xet.event_created_by
19450   , xet.budgetary_control_flag 
19451   , h1.TRANSACTION_ID    source_1
19452   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
19453   , h4.TRANSACTION_QUANTITY    source_3
19454   , h4.TRANSACTION_UOM    source_4
19455   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
19456   , h1.DISTRIBUTION_TYPE    source_9
19457   , fvl9.meaning   source_9_meaning
19458   , h3.ENCUMBRANCE_REVERSAL_FLAG    source_17
19459   , h4.APPLIED_TO_APPL_ID    source_19
19460   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_25
19461   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_26
19462   , h9.CST_ENCUM_UPG_OPTION    source_27
19463   , h8.REQ_ENCUMBRANCE_FLAG    source_33
19464   , h7.REQ_RESERVED_FLAG    source_34
19465   , h4.BUS_FLOW_REQ_DIST_TYPE    source_35
19466   , h4.BUS_FLOW_REQ_ENTITY_CODE    source_36
19467   , h4.BUS_FLOW_REQ_DIST_ID    source_37
19468   , h4.BUS_FLOW_REQ_ID    source_38
19469   , h7.REQ_BUDGET_ACCOUNT    source_39
19470   , h8.REQ_ENCUMBRANCE_TYPE_ID    source_40
19471   , h1.TRANSFER_TO_GL_INDICATOR    source_42
19472   , fvl42.meaning   source_42_meaning
19473   FROM xla_events_gt     xet 
19474   , CST_XLA_INV_HEADERS_V  h1
19475   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
19476   , CST_XLA_INV_REF_V  h4
19477   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
19478   , CST_XLA_INV_TXN_TYPES_REF_V  h6
19479   , PO_REQ_DISTS_REF_V  h7
19480   , PO_REQ_HEADERS_REF_V  h8
19481   , PSA_CST_XLA_UPG_V  h9
19482   , fnd_lookup_values    fvl9
19483   , fnd_lookup_values    fvl42
19484  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
19485    and xet.event_type_code = C_EVENT_TYPE_CODE
19486    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
19487  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h4.BUS_FLOW_REQ_DIST_ID=h7.REQ_DISTRIBUTION_ID (+)  AND h4.BUS_FLOW_REQ_ID = h8.REQ_ID (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
19488   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
19489   AND fvl9.view_application_id(+) = 700
19490   AND fvl9.language(+)            = USERENV('LANG')
19491      AND fvl42.lookup_type(+)         = 'YES_NO'
19492   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
19493   AND fvl42.view_application_id(+) = 0
19494   AND fvl42.language(+)            = USERENV('LANG')
19495   
19496  ORDER BY event_id
19497 ;
19498 
19499 
19500 --
19501 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
19502 IS
19503 SELECT /*+ leading(xet) cardinality(xet,1) */
19504 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_NO_TP
19505 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
19506     xet.entity_id
19507    ,xet.legal_entity_id
19508    ,xet.entity_code
19509    ,xet.transaction_number
19510    ,xet.event_id
19511    ,xet.event_class_code
19512    ,xet.event_type_code
19513    ,xet.event_number
19514    ,xet.event_date
19515    ,xet.transaction_date
19516    ,xet.reference_num_1
19517    ,xet.reference_num_2
19518    ,xet.reference_num_3
19519    ,xet.reference_num_4
19520    ,xet.reference_char_1
19521    ,xet.reference_char_2
19522    ,xet.reference_char_3
19523    ,xet.reference_char_4
19524    ,xet.reference_date_1
19525    ,xet.reference_date_2
19526    ,xet.reference_date_3
19527    ,xet.reference_date_4
19528    ,xet.event_created_by
19529    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
19530   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
19531   , l2.DISTRIBUTION_IDENTIFIER    source_8
19532   , l2.CURRENCY_CODE    source_11
19533   FROM xla_events_gt     xet 
19534   , CST_XLA_INV_LINES_V  l2
19535  WHERE xet.event_id between x_first_event_id and x_last_event_id
19536    and xet.event_date between p_pad_start_date and p_pad_end_date
19537    and xet.event_type_code = C_EVENT_TYPE_CODE
19538    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
19539 ;
19540 
19541 --
19542 BEGIN
19543 IF g_log_enabled THEN
19544    l_log_module := C_DEFAULT_MODULE||'.EventType_31';
19545 END IF;
19546 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19547    trace
19548       (p_msg      => 'BEGIN of EventType_31'
19549       ,p_level    => C_LEVEL_PROCEDURE
19550       ,p_module   => l_log_module);
19551 END IF;
19552 
19553 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19554    trace
19555       (p_msg      => 'p_application_id = '||p_application_id||
19556                      ' - p_base_ledger_id = '||p_base_ledger_id||
19557                      ' - p_target_ledger_id  = '||p_target_ledger_id||
19558                      ' - p_language = '||p_language||
19559                      ' - p_currency_code = '||p_currency_code||
19560                      ' - p_sla_ledger_id = '||p_sla_ledger_id
19561       ,p_level    => C_LEVEL_STATEMENT
19562       ,p_module   => l_log_module);
19563 END IF;
19564 --
19565 -- initialze arrays
19566 --
19567 g_array_event.DELETE;
19568 l_rec_array_event := l_null_rec_array_event;
19569 --
19570 --------------------------------------
19571 -- 4262811 Initialze MPA Line Number
19572 --------------------------------------
19573 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
19574 
19575 --
19576 
19577 --
19578 OPEN header_cur;
19579 --
19580 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19581    trace
19582    (p_msg      => 'SQL - FETCH header_cur'
19583    ,p_level    => C_LEVEL_STATEMENT
19584    ,p_module   => l_log_module);
19585 END IF;
19586 --
19587 LOOP
19588 FETCH header_cur BULK COLLECT INTO
19589         l_array_entity_id
19590       , l_array_legal_entity_id
19591       , l_array_entity_code
19592       , l_array_transaction_num
19593       , l_array_event_id
19594       , l_array_class_code
19595       , l_array_event_type
19596       , l_array_event_number
19597       , l_array_event_date
19598       , l_array_transaction_date
19599       , l_array_reference_num_1
19600       , l_array_reference_num_2
19601       , l_array_reference_num_3
19602       , l_array_reference_num_4
19603       , l_array_reference_char_1
19604       , l_array_reference_char_2
19605       , l_array_reference_char_3
19606       , l_array_reference_char_4
19607       , l_array_reference_date_1
19608       , l_array_reference_date_2
19609       , l_array_reference_date_3
19610       , l_array_reference_date_4
19611       , l_array_event_created_by
19612       , l_array_budgetary_control_flag 
19613       , l_array_source_1
19614       , l_array_source_2
19615       , l_array_source_3
19616       , l_array_source_4
19617       , l_array_source_5
19618       , l_array_source_9
19619       , l_array_source_9_meaning
19620       , l_array_source_17
19621       , l_array_source_19
19622       , l_array_source_25
19623       , l_array_source_26
19624       , l_array_source_27
19625       , l_array_source_33
19626       , l_array_source_34
19627       , l_array_source_35
19628       , l_array_source_36
19629       , l_array_source_37
19630       , l_array_source_38
19631       , l_array_source_39
19632       , l_array_source_40
19633       , l_array_source_42
19634       , l_array_source_42_meaning
19635       LIMIT l_rows;
19636 --
19637 IF (C_LEVEL_EVENT >= g_log_level) THEN
19638    trace
19639    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
19640    ,p_level    => C_LEVEL_EVENT
19641    ,p_module   => l_log_module);
19642 END IF;
19643 --
19644 EXIT WHEN l_array_entity_id.COUNT = 0;
19645 
19646 -- initialize arrays
19647 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
19648 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
19649 
19650 --
19651 -- Bug 4458708
19652 --
19653 XLA_AE_LINES_PKG.g_LineNumber := 0;
19654 
19655 
19656 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
19657 g_last_hdr_idx := l_array_event_id.LAST;
19658 --
19659 -- loop for the headers. Each iteration is for each header extract row
19660 -- fetched in header cursor
19661 --
19662 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
19663 
19664 --
19665 -- set event info as cache for other routines to refer event attributes
19666 --
19667 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
19668    (p_application_id           => p_application_id
19669    ,p_primary_ledger_id        => p_primary_ledger_id
19670    ,p_base_ledger_id           => p_base_ledger_id
19671    ,p_target_ledger_id         => p_target_ledger_id
19672    ,p_entity_id                => l_array_entity_id(hdr_idx)
19673    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
19674    ,p_entity_code              => l_array_entity_code(hdr_idx)
19675    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
19676    ,p_event_id                 => l_array_event_id(hdr_idx)
19677    ,p_event_class_code         => l_array_class_code(hdr_idx)
19678    ,p_event_type_code          => l_array_event_type(hdr_idx)
19679    ,p_event_number             => l_array_event_number(hdr_idx)
19680    ,p_event_date               => l_array_event_date(hdr_idx)
19681    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
19682    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
19683    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
19684    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
19685    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
19686    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
19687    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
19688    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
19689    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
19690    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
19691    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
19692    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
19693    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
19694    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
19695    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
19696 
19697 --
19698 -- set the status of entry to C_VALID (0)
19699 --
19700 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
19701 
19702 --
19703 -- initialize a row for ae header
19704 --
19705 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
19706 
19707 l_event_id := l_array_event_id(hdr_idx);
19708 
19709 --
19710 -- storing the hdr_idx for event. May be used by line cursor.
19711 --
19712 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
19713 
19714 --
19715 -- store sources from header extract. This can be improved to
19716 -- store only those sources from header extract that may be used in lines
19717 --
19718 
19719 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
19720 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
19721 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
19722 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
19723 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
19724 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
19725 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
19726 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
19727 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
19728 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
19729 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
19730 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
19731 g_array_event(l_event_id).array_value_char('source_33') := l_array_source_33(hdr_idx);
19732 g_array_event(l_event_id).array_value_char('source_34') := l_array_source_34(hdr_idx);
19733 g_array_event(l_event_id).array_value_char('source_35') := l_array_source_35(hdr_idx);
19734 g_array_event(l_event_id).array_value_char('source_36') := l_array_source_36(hdr_idx);
19735 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
19736 g_array_event(l_event_id).array_value_num('source_38') := l_array_source_38(hdr_idx);
19737 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
19738 g_array_event(l_event_id).array_value_num('source_40') := l_array_source_40(hdr_idx);
19739 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
19740 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
19741 
19742 --
19743 -- initilaize the status of ae headers for diffrent balance types
19744 -- the status is initialised to C_NOT_CREATED (2)
19745 --
19746 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
19747 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
19748 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
19749 
19750 --
19751 -- call api to validate and store accounting attributes for header
19752 --
19753 
19754 ------------------------------------------------------------
19755 -- Accrual Reversal : to get date for Standard Source (NONE)
19756 ------------------------------------------------------------
19757 l_acc_rev_gl_date_source := NULL;
19758 
19759      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
19760       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_40');
19761      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
19762       l_rec_acct_attrs.array_date_value(2) := 
19763 xla_ae_sources_pkg.GetSystemSourceDate(
19764    p_source_code           => 'XLA_REFERENCE_DATE_1'
19765  , p_source_type_code      => 'Y'
19766  , p_source_application_id =>  602
19767 );
19768      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
19769       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_42');
19770 
19771 
19772 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
19773 
19774 XLA_AE_HEADER_PKG.SetJeCategoryName;
19775 
19776 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
19777 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
19778 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
19779 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
19780 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
19781 
19782 
19783 --
19784 xla_ae_header_pkg.SetHdrDescription(
19785    p_description => Description_1 (
19786    p_application_id => p_application_id 
19787  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
19788  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
19789  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
19790  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
19791  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
19792    )
19793 );
19794 --
19795 
19796 -- No header level analytical criteria
19797 
19798 --
19799 --accounting attribute enhancement, bug 3612931
19800 --
19801 l_trx_reversal_source := SUBSTR(NULL, 1,30);
19802 
19803 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
19804    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
19805 
19806    xla_accounting_err_pkg.build_message
19807       (p_appli_s_name            => 'XLA'
19808       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
19809       ,p_token_1                 => 'ACCT_ATTR_NAME'
19810       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
19811       ,p_token_2                 => 'PRODUCT_NAME'
19812       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
19813       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
19814       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
19815       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
19816 
19817 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
19818    --
19819    -- following sets the accounting attributes needed to reverse
19820    -- accounting for a distributeion
19821    --
19822    xla_ae_lines_pkg.SetTrxReversalAttrs
19823       (p_event_id              => l_event_id
19824       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
19825       ,p_trx_reversal_source   => l_trx_reversal_source);
19826 
19827 END IF;
19828 
19829 
19830 ----------------------------------------------------------------
19831 -- 4262811 -  update the header statuses to invalid in need be
19832 ----------------------------------------------------------------
19833 --
19834 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
19835 
19836 
19837   -----------------------------------------------
19838   -- No accrual reversal for the event class/type
19839   -----------------------------------------------
19840 ----------------------------------------------------------------
19841 
19842 --
19843 -- this ends the header loop iteration for one bulk fetch
19844 --
19845 END LOOP;
19846 
19847 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
19848 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
19849 
19850 --
19851 -- insert dummy rows into lines gt table that were created due to
19852 -- transaction reversals
19853 --
19854 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
19855    l_result := XLA_AE_LINES_PKG.InsertLines;
19856 END IF;
19857 
19858 --
19859 -- reset the temp_line_num for each set of events fetched from header
19860 -- cursor rather than doing it for each new event in line cursor
19861 -- Bug 3939231
19862 --
19863 xla_ae_lines_pkg.g_temp_line_num := 0;
19864 
19865 
19866 
19867 --
19868 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
19869 --
19870 --
19871 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19872 
19873       trace
19874          (p_msg      => 'SQL - FETCH line_cur'
19875          ,p_level    => C_LEVEL_STATEMENT
19876          ,p_module   => l_log_module);
19877 
19878 END IF;
19879 --
19880 --
19881 LOOP
19882   --
19883   FETCH line_cur BULK COLLECT INTO
19884         l_array_entity_id
19885       , l_array_legal_entity_id
19886       , l_array_entity_code
19887       , l_array_transaction_num
19888       , l_array_event_id
19889       , l_array_class_code
19890       , l_array_event_type
19891       , l_array_event_number
19892       , l_array_event_date
19893       , l_array_transaction_date
19894       , l_array_reference_num_1
19895       , l_array_reference_num_2
19896       , l_array_reference_num_3
19897       , l_array_reference_num_4
19898       , l_array_reference_char_1
19899       , l_array_reference_char_2
19900       , l_array_reference_char_3
19901       , l_array_reference_char_4
19902       , l_array_reference_date_1
19903       , l_array_reference_date_2
19904       , l_array_reference_date_3
19905       , l_array_reference_date_4
19906       , l_array_event_created_by
19907       , l_array_budgetary_control_flag
19908       , l_array_extract_line_num 
19909       , l_array_source_7
19910       , l_array_source_8
19911       , l_array_source_11
19912       LIMIT l_rows;
19913 
19914   --
19915   IF (C_LEVEL_EVENT >= g_log_level) THEN
19916             trace
19917                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
19918                ,p_level    => C_LEVEL_EVENT
19919                ,p_module   => l_log_module);
19920   END IF;
19921   --
19922   EXIT WHEN l_array_entity_id.count = 0;
19923 
19924   XLA_AE_LINES_PKG.g_rec_lines := null;
19925 
19926 --
19927 -- Bug 4458708
19928 --
19929 XLA_AE_LINES_PKG.g_LineNumber := 0;
19930 --
19931 --
19932 
19933 FOR Idx IN 1..l_array_event_id.count LOOP
19934    --
19935    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
19936    --
19937    l_event_id := l_array_event_id(idx);  -- 5648433
19938 
19939    --
19940    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
19941    --
19942 
19943    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
19944              (g_array_event(l_event_id).array_value_num('header_index'))
19945          ,'N'
19946          ) <> 'Y'
19947    THEN
19948       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
19949          trace
19950             (p_msg      => 'Trancaction revesal option is not Y '
19951             ,p_level    => C_LEVEL_STATEMENT
19952             ,p_module   => l_log_module);
19953       END IF;
19954 
19955 --
19956 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
19957 --
19958 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
19959 --
19960 -- set event info as cache for other routines to refer event attributes
19961 --
19962 
19963 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
19964    l_previous_event_id := l_event_id;
19965 
19966    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
19967       (p_application_id           => p_application_id
19968       ,p_primary_ledger_id        => p_primary_ledger_id
19969       ,p_base_ledger_id           => p_base_ledger_id
19970       ,p_target_ledger_id         => p_target_ledger_id
19971       ,p_entity_id                => l_array_entity_id(Idx)
19972       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
19973       ,p_entity_code              => l_array_entity_code(Idx)
19974       ,p_transaction_num          => l_array_transaction_num(Idx)
19975       ,p_event_id                 => l_array_event_id(Idx)
19976       ,p_event_class_code         => l_array_class_code(Idx)
19977       ,p_event_type_code          => l_array_event_type(Idx)
19978       ,p_event_number             => l_array_event_number(Idx)
19979       ,p_event_date               => l_array_event_date(Idx)
19980       ,p_transaction_date         => l_array_transaction_date(Idx)
19981       ,p_reference_num_1          => l_array_reference_num_1(Idx)
19982       ,p_reference_num_2          => l_array_reference_num_2(Idx)
19983       ,p_reference_num_3          => l_array_reference_num_3(Idx)
19984       ,p_reference_num_4          => l_array_reference_num_4(Idx)
19985       ,p_reference_char_1         => l_array_reference_char_1(Idx)
19986       ,p_reference_char_2         => l_array_reference_char_2(Idx)
19987       ,p_reference_char_3         => l_array_reference_char_3(Idx)
19988       ,p_reference_char_4         => l_array_reference_char_4(Idx)
19989       ,p_reference_date_1         => l_array_reference_date_1(Idx)
19990       ,p_reference_date_2         => l_array_reference_date_2(Idx)
19991       ,p_reference_date_3         => l_array_reference_date_3(Idx)
19992       ,p_reference_date_4         => l_array_reference_date_4(Idx)
19993       ,p_event_created_by         => l_array_event_created_by(Idx)
19994       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
19995        --
19996 END IF;
19997 
19998 
19999 
20000 --
20001 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
20002 
20003 l_acct_reversal_source := SUBSTR(NULL, 1,30);
20004 
20005 IF l_continue_with_lines THEN
20006    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
20007       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
20008 
20009       xla_accounting_err_pkg.build_message
20010          (p_appli_s_name            => 'XLA'
20011          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
20012          ,p_token_1                 => 'LINE_NUMBER'
20013          ,p_value_1                 => l_array_extract_line_num(Idx)
20014          ,p_token_2                 => 'PRODUCT_NAME'
20015          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
20016          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
20017          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
20018          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
20019 
20020    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
20021       --
20022       -- following sets the accounting attributes needed to reverse
20023       -- accounting for a distributeion
20024       --
20025 
20026       --
20027       -- 5217187
20028       --
20029       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
20030       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
20031                                        g_array_event(l_event_id).array_value_num('header_index'));
20032       --
20033       --
20034 
20035       -- No reversal code generated
20036 
20037       xla_ae_lines_pkg.SetAcctReversalAttrs
20038          (p_event_id             => l_event_id
20039          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
20040          ,p_calculate_acctd_flag => l_calculate_acctd_flag
20041          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
20042    END IF;
20043 
20044    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
20045        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
20046 
20047 --
20048 AcctLineType_24 (
20049  p_application_id  => p_application_id
20050  ,p_event_id     => l_event_id
20051  ,p_calculate_acctd_flag => l_calculate_acctd_flag
20052  ,p_calculate_g_l_flag => l_calculate_g_l_flag
20053  ,p_actual_flag => l_actual_flag
20054  ,p_balance_type_code => l_balance_type_code
20055  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
20056  
20057  , p_source_7 => l_array_source_7(Idx)
20058  , p_source_8 => l_array_source_8(Idx)
20059  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
20060  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
20061  , p_source_11 => l_array_source_11(Idx)
20062  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
20063  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
20064  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
20065  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
20066  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
20067  , p_source_33 => g_array_event(l_event_id).array_value_char('source_33')
20068  , p_source_34 => g_array_event(l_event_id).array_value_char('source_34')
20069  , p_source_35 => g_array_event(l_event_id).array_value_char('source_35')
20070  , p_source_36 => g_array_event(l_event_id).array_value_char('source_36')
20071  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
20072  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
20073  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
20074  , p_source_40 => g_array_event(l_event_id).array_value_num('source_40')
20075  );
20076 If(l_balance_type_code = 'A') THEN
20077   l_actual_gain_loss_ref := l_gain_or_loss_ref;
20078 END IF;
20079 
20080 --
20081 
20082       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
20083       -- or secondary ledger that has different currency with primary
20084       -- or alc that is calculated by sla
20085       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
20086             (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'))
20087 
20088 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
20089 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
20090           AND (l_actual_flag = 'A')) THEN
20091         XLA_AE_LINES_PKG.CreateGainOrLossLines(
20092           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
20093          ,p_application_id   => p_application_id
20094          ,p_amb_context_code => 'DEFAULT'
20095          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
20096          ,p_event_class_code => C_EVENT_CLASS_CODE
20097          ,p_event_type_code  => C_EVENT_TYPE_CODE
20098          
20099          ,p_gain_ccid        => -1
20100          ,p_loss_ccid        => -1
20101 
20102          ,p_actual_flag      => l_actual_flag
20103          ,p_enc_flag         => null
20104          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
20105          ,p_enc_g_l_ref      => null
20106          );
20107       END IF;
20108    END IF;
20109 END IF;
20110 
20111    ELSE
20112       --
20113       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
20114       --
20115       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20116          trace
20117             (p_msg      => 'Trancaction revesal option is Y'
20118             ,p_level    => C_LEVEL_STATEMENT
20119             ,p_module   => l_log_module);
20120       END IF;
20121    END IF;
20122 
20123 END LOOP;
20124 l_result := XLA_AE_LINES_PKG.InsertLines ;
20125 end loop;
20126 close line_cur;
20127 
20128 
20129 --
20130 -- insert headers into xla_ae_headers_gt table
20131 --
20132 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
20133 
20134 -- insert into errors table here.
20135 
20136 END LOOP;
20137 
20138 --
20139 -- 4865292
20140 --
20141 -- Compare g_hdr_extract_count with event count in
20142 -- CreateHeadersAndLines.
20143 --
20144 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
20145 
20146 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20147    trace (p_msg     => '# rows extracted from header extract objects '
20148                     || ' (running total): '
20149                     || g_hdr_extract_count
20150          ,p_level   => C_LEVEL_STATEMENT
20151          ,p_module  => l_log_module);
20152 END IF;
20153 
20154 CLOSE header_cur;
20155 --
20156 
20157 --
20158 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20159    trace
20160       (p_msg      => 'END of EventType_31'
20161       ,p_level    => C_LEVEL_PROCEDURE
20162       ,p_module   => l_log_module);
20163 END IF;
20164 --
20165 RETURN l_result;
20166 EXCEPTION
20167 WHEN xla_exceptions_pkg.application_exception THEN
20168    
20169 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
20170 
20171    
20172 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
20173 
20174    RAISE;
20175 
20176 WHEN NO_DATA_FOUND THEN
20177 
20178 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
20179 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
20180 
20181 FOR header_record IN header_cur
20182 LOOP
20183     l_array_header_events(header_record.event_id) := header_record.event_id;
20184 END LOOP;
20185 
20186 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
20187 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
20188 
20189 fnd_file.put_line(fnd_file.LOG, '                    ');
20190 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
20191 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
20192 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
20193 
20194 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
20195 LOOP
20196 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
20197 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
20198         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
20199 	END IF;
20200 END LOOP;
20201 
20202 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
20203 fnd_file.put_line(fnd_file.LOG, '                    ');
20204 
20205 
20206 xla_exceptions_pkg.raise_message
20207       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_31');
20208 
20209 
20210 WHEN OTHERS THEN
20211    xla_exceptions_pkg.raise_message
20212       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_31');
20213 END EventType_31;
20214 --
20215 
20216 ---------------------------------------
20217 --
20218 -- PRIVATE PROCEDURE
20219 --         insert_sources_32
20220 --
20221 ----------------------------------------
20222 --
20223 PROCEDURE insert_sources_32(
20224                                 p_target_ledger_id       IN NUMBER
20225                               , p_language               IN VARCHAR2
20226                               , p_sla_ledger_id          IN NUMBER
20227                               , p_pad_start_date         IN DATE
20228                               , p_pad_end_date           IN DATE
20229                          )
20230 IS
20231 
20232 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_TP';
20233 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
20234 p_apps_owner                   VARCHAR2(30);
20235 l_log_module                   VARCHAR2(240);
20236 BEGIN
20237 IF g_log_enabled THEN
20238       l_log_module := C_DEFAULT_MODULE||'.insert_sources_32';
20239 END IF;
20240 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20241 
20242       trace
20243          (p_msg      => 'BEGIN of insert_sources_32'
20244          ,p_level    => C_LEVEL_PROCEDURE
20245          ,p_module   => l_log_module);
20246 
20247 END IF;
20248 
20249 -- select APPS owner
20250 SELECT oracle_username
20251   INTO p_apps_owner
20252   FROM fnd_oracle_userid
20253  WHERE read_only_flag = 'U'
20254 ;
20255 
20256 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20257       trace
20258          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
20259                         ' - p_language = '||p_language||
20260                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
20261                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
20262                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
20263                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
20264          ,p_level    => C_LEVEL_STATEMENT
20265          ,p_module   => l_log_module);
20266 END IF;
20267 
20268 
20269 --
20270 INSERT INTO xla_diag_sources --hdr1
20271 (
20272         event_id
20273       , ledger_id
20274       , sla_ledger_id
20275       , description_language
20276       , object_name
20277       , object_type_code
20278       , line_number
20279       , source_application_id
20280       , source_type_code
20281       , source_code
20282       , source_value
20283       , source_meaning
20284       , created_by
20285       , creation_date
20286       , last_update_date
20287       , last_updated_by
20288       , last_update_login
20289       , program_update_date
20290       , program_application_id
20291       , program_id
20292       , request_id
20293 )
20294 SELECT
20295         event_id
20296       , p_target_ledger_id
20297       , p_sla_ledger_id
20298       , p_language
20299       , object_name
20300       , object_type_code
20301       , line_number
20302       , source_application_id
20303       , source_type_code
20304       , source_code
20305       , SUBSTR(source_value ,1,1996)
20306       , SUBSTR(source_meaning,1,200)
20307       , xla_environment_pkg.g_Usr_Id
20308       , TRUNC(SYSDATE)
20309       , TRUNC(SYSDATE)
20310       , xla_environment_pkg.g_Usr_Id
20311       , xla_environment_pkg.g_Login_Id
20312       , TRUNC(SYSDATE)
20313       , xla_environment_pkg.g_Prog_Appl_Id
20314       , xla_environment_pkg.g_Prog_Id
20315       , xla_environment_pkg.g_Req_Id
20316   FROM (
20317        SELECT xet.event_id                  event_id
20318             , 0                             line_number
20319             , CASE r
20320                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
20321                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
20322                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
20323                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
20324                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
20325                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
20326                 WHEN 7 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
20327                 WHEN 8 THEN 'CST_XLA_INV_REF_V' 
20328                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
20329                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
20330                 WHEN 11 THEN 'PSA_CST_XLA_UPG_V' 
20331                 WHEN 12 THEN 'PO_REQ_HEADERS_REF_V' 
20332                 WHEN 13 THEN 'PO_REQ_DISTS_REF_V' 
20333                 WHEN 14 THEN 'CST_XLA_INV_REF_V' 
20334                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
20335                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
20336                 WHEN 17 THEN 'CST_XLA_INV_REF_V' 
20337                 WHEN 18 THEN 'PO_REQ_DISTS_REF_V' 
20338                 WHEN 19 THEN 'PO_REQ_HEADERS_REF_V' 
20339                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
20340                 
20341                ELSE null
20342               END                           object_name
20343             , CASE r
20344                 WHEN 1 THEN 'HEADER' 
20345                 WHEN 2 THEN 'HEADER' 
20346                 WHEN 3 THEN 'HEADER' 
20347                 WHEN 4 THEN 'HEADER' 
20348                 WHEN 5 THEN 'HEADER' 
20349                 WHEN 6 THEN 'HEADER' 
20350                 WHEN 7 THEN 'HEADER' 
20351                 WHEN 8 THEN 'HEADER' 
20352                 WHEN 9 THEN 'HEADER' 
20353                 WHEN 10 THEN 'HEADER' 
20354                 WHEN 11 THEN 'HEADER' 
20355                 WHEN 12 THEN 'HEADER' 
20356                 WHEN 13 THEN 'HEADER' 
20357                 WHEN 14 THEN 'HEADER' 
20358                 WHEN 15 THEN 'HEADER' 
20359                 WHEN 16 THEN 'HEADER' 
20360                 WHEN 17 THEN 'HEADER' 
20361                 WHEN 18 THEN 'HEADER' 
20362                 WHEN 19 THEN 'HEADER' 
20363                 WHEN 20 THEN 'HEADER' 
20364                 
20365                 ELSE null
20366               END                           object_type_code
20367             , CASE r
20368                 WHEN 1 THEN '707' 
20369                 WHEN 2 THEN '707' 
20370                 WHEN 3 THEN '707' 
20371                 WHEN 4 THEN '707' 
20372                 WHEN 5 THEN '707' 
20373                 WHEN 6 THEN '707' 
20374                 WHEN 7 THEN '707' 
20375                 WHEN 8 THEN '707' 
20376                 WHEN 9 THEN '707' 
20377                 WHEN 10 THEN '707' 
20378                 WHEN 11 THEN '707' 
20379                 WHEN 12 THEN '201' 
20380                 WHEN 13 THEN '201' 
20381                 WHEN 14 THEN '707' 
20382                 WHEN 15 THEN '707' 
20383                 WHEN 16 THEN '707' 
20384                 WHEN 17 THEN '707' 
20385                 WHEN 18 THEN '201' 
20386                 WHEN 19 THEN '201' 
20387                 WHEN 20 THEN '707' 
20388                 
20389                 ELSE null
20390               END                           source_application_id
20391             , 'S'             source_type_code
20392             , CASE r
20393                 WHEN 1 THEN 'TRANSACTION_ID' 
20394                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
20395                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
20396                 WHEN 4 THEN 'TRANSACTION_UOM' 
20397                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
20398                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
20399                 WHEN 7 THEN 'ENCUMBRANCE_REVERSAL_FLAG' 
20400                 WHEN 8 THEN 'APPLIED_TO_APPL_ID' 
20401                 WHEN 9 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
20402                 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
20403                 WHEN 11 THEN 'CST_ENCUM_UPG_OPTION' 
20404                 WHEN 12 THEN 'REQ_ENCUMBRANCE_FLAG' 
20405                 WHEN 13 THEN 'REQ_RESERVED_FLAG' 
20406                 WHEN 14 THEN 'BUS_FLOW_REQ_DIST_TYPE' 
20407                 WHEN 15 THEN 'BUS_FLOW_REQ_ENTITY_CODE' 
20408                 WHEN 16 THEN 'BUS_FLOW_REQ_DIST_ID' 
20409                 WHEN 17 THEN 'BUS_FLOW_REQ_ID' 
20410                 WHEN 18 THEN 'REQ_BUDGET_ACCOUNT' 
20411                 WHEN 19 THEN 'REQ_ENCUMBRANCE_TYPE_ID' 
20412                 WHEN 20 THEN 'TRANSFER_TO_GL_INDICATOR' 
20413                 
20414                 ELSE null
20415               END                           source_code
20416             , CASE r
20417                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
20418                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
20419                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
20420                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
20421                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
20422                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
20423                 WHEN 7 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_FLAG)
20424                 WHEN 8 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
20425                 WHEN 9 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
20426                 WHEN 10 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
20427                 WHEN 11 THEN TO_CHAR(h9.CST_ENCUM_UPG_OPTION)
20428                 WHEN 12 THEN TO_CHAR(h8.REQ_ENCUMBRANCE_FLAG)
20429                 WHEN 13 THEN TO_CHAR(h7.REQ_RESERVED_FLAG)
20430                 WHEN 14 THEN TO_CHAR(h4.BUS_FLOW_REQ_DIST_TYPE)
20431                 WHEN 15 THEN TO_CHAR(h4.BUS_FLOW_REQ_ENTITY_CODE)
20432                 WHEN 16 THEN TO_CHAR(h4.BUS_FLOW_REQ_DIST_ID)
20433                 WHEN 17 THEN TO_CHAR(h4.BUS_FLOW_REQ_ID)
20434                 WHEN 18 THEN TO_CHAR(h7.REQ_BUDGET_ACCOUNT)
20435                 WHEN 19 THEN TO_CHAR(h8.REQ_ENCUMBRANCE_TYPE_ID)
20436                 WHEN 20 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
20437                 
20438                 ELSE null
20439               END                           source_value
20440             , CASE r
20441                 WHEN 6 THEN fvl9.meaning
20442                 WHEN 20 THEN fvl42.meaning
20443                 
20444                 ELSE null
20445               END               source_meaning
20446         FROM xla_events_gt     xet  
20447       , CST_XLA_INV_HEADERS_V  h1
20448       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
20449       , CST_XLA_INV_REF_V  h4
20450       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
20451       , CST_XLA_INV_TXN_TYPES_REF_V  h6
20452       , PO_REQ_DISTS_REF_V  h7
20453       , PO_REQ_HEADERS_REF_V  h8
20454       , PSA_CST_XLA_UPG_V  h9
20455   , fnd_lookup_values    fvl9
20456   , fnd_lookup_values    fvl42
20457             ,(select rownum r from all_objects where rownum <= 20 and owner = p_apps_owner)
20458        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
20459          AND xet.event_type_code = C_EVENT_TYPE_CODE
20460             AND h1.event_id = xet.event_id
20461  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id = h1.inventory_item_id and h5.organization_id = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h4.bus_flow_req_dist_id=h7.req_distribution_id (+)  AND h4.bus_flow_req_id = h8.req_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
20462   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
20463   AND fvl9.view_application_id(+) = 700
20464   AND fvl9.language(+)            = USERENV('LANG')
20465      AND fvl42.lookup_type(+)         = 'YES_NO'
20466   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
20467   AND fvl42.view_application_id(+) = 0
20468   AND fvl42.language(+)            = USERENV('LANG')
20469   
20470 )
20471 ;
20472 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20473 
20474       trace
20475          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
20476          ,p_level    => C_LEVEL_STATEMENT
20477          ,p_module   => l_log_module);
20478 
20479 END IF;
20480 --
20481 
20482 
20483 
20484 --
20485 INSERT INTO xla_diag_sources --line1
20486 (
20487         event_id
20488       , ledger_id
20489       , sla_ledger_id
20490       , description_language
20491       , object_name
20492       , object_type_code
20493       , line_number
20494       , source_application_id
20495       , source_type_code
20496       , source_code
20497       , source_value
20498       , source_meaning
20499       , created_by
20500       , creation_date
20501       , last_update_date
20502       , last_updated_by
20503       , last_update_login
20504       , program_update_date
20505       , program_application_id
20506       , program_id
20507       , request_id
20508 )
20509 SELECT  event_id
20510       , p_target_ledger_id
20511       , p_sla_ledger_id
20512       , p_language
20513       , object_name
20514       , object_type_code
20515       , line_number
20516       , source_application_id
20517       , source_type_code
20518       , source_code
20519       , SUBSTR(source_value,1,1996)
20520       , SUBSTR(source_meaning,1,200)
20521       , xla_environment_pkg.g_Usr_Id
20522       , TRUNC(SYSDATE)
20523       , TRUNC(SYSDATE)
20524       , xla_environment_pkg.g_Usr_Id
20525       , xla_environment_pkg.g_Login_Id
20526       , TRUNC(SYSDATE)
20527       , xla_environment_pkg.g_Prog_Appl_Id
20528       , xla_environment_pkg.g_Prog_Id
20529       , xla_environment_pkg.g_Req_Id
20530   FROM (
20531        SELECT xet.event_id                  event_id
20532             , l2.line_number                 line_number
20533             , CASE r
20534                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
20535                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
20536                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
20537                 
20538                ELSE null
20539               END                           object_name
20540             , CASE r
20541                 WHEN 1 THEN 'LINE' 
20542                 WHEN 2 THEN 'LINE' 
20543                 WHEN 3 THEN 'LINE' 
20544                 
20545                 ELSE null
20546               END                           object_type_code
20547             , CASE r
20548                 WHEN 1 THEN '707' 
20549                 WHEN 2 THEN '707' 
20550                 WHEN 3 THEN '707' 
20551                 
20552                 ELSE null
20553               END                           source_application_id
20554             , 'S'             source_type_code
20555             , CASE r
20556                 WHEN 1 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
20557                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
20558                 WHEN 3 THEN 'CURRENCY_CODE' 
20559                 
20560                 ELSE null
20561               END                           source_code
20562             , CASE r
20563                 WHEN 1 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
20564                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
20565                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
20566                 
20567                 ELSE null
20568               END                           source_value
20569             , null              source_meaning
20570          FROM  xla_events_gt     xet  
20571         , CST_XLA_INV_LINES_V  l2
20572             ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
20573         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
20574           AND xet.event_type_code = C_EVENT_TYPE_CODE
20575             AND l2.event_id          = xet.event_id
20576 
20577 )
20578 ;
20579 --
20580 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20581 
20582       trace
20583          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
20584          ,p_level    => C_LEVEL_STATEMENT
20585          ,p_module   => l_log_module);
20586 
20587 END IF;
20588 
20589 
20590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20591       trace
20592          (p_msg      => 'END of insert_sources_32'
20593          ,p_level    => C_LEVEL_PROCEDURE
20594          ,p_module   => l_log_module);
20595 END IF;
20596 EXCEPTION
20597   WHEN xla_exceptions_pkg.application_exception THEN
20598       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
20599             trace
20600                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
20601                ,p_level    => C_LEVEL_EXCEPTION
20602                ,p_module   => l_log_module);
20603       END IF;
20604       RAISE;
20605   WHEN OTHERS THEN
20606       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
20607             trace
20608                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
20609                ,p_level    => C_LEVEL_EXCEPTION
20610                ,p_module   => l_log_module);
20611        END IF;
20612        xla_exceptions_pkg.raise_message
20613            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_32');
20614 END insert_sources_32;
20615 --
20616 
20617 ---------------------------------------
20618 --
20619 -- PRIVATE FUNCTION
20620 --         EventType_32
20621 --
20622 ----------------------------------------
20623 --
20624 FUNCTION EventType_32
20625        (p_application_id         IN NUMBER
20626        ,p_base_ledger_id         IN NUMBER
20627        ,p_target_ledger_id       IN NUMBER
20628        ,p_language               IN VARCHAR2
20629        ,p_currency_code          IN VARCHAR2
20630        ,p_sla_ledger_id          IN NUMBER
20631        ,p_pad_start_date         IN DATE
20632        ,p_pad_end_date           IN DATE
20633        ,p_primary_ledger_id      IN NUMBER)
20634 RETURN BOOLEAN IS
20635 --
20636 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_RCPT_RECIPIENT_RCPT_TP';
20637 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_RCPT_RECIPIENT_RCPT';
20638 
20639 l_calculate_acctd_flag   VARCHAR2(1) :='N';
20640 l_calculate_g_l_flag     VARCHAR2(1) :='N';
20641 --
20642 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20643 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20644 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
20645 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20646 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20647 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
20648 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
20649 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20650 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20651 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20652 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20653 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20654 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20655 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
20656 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20657 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20658 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20659 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
20660 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20661 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20662 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20663 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
20664 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
20665 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
20666 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
20667 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
20668 
20669 l_event_id                             NUMBER;
20670 l_previous_event_id                    NUMBER;
20671 l_first_event_id                       NUMBER;
20672 l_last_event_id                        NUMBER;
20673 
20674 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
20675 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
20676 --
20677 --
20678 l_result                    BOOLEAN := TRUE;
20679 l_rows                      NUMBER  := 1000;
20680 l_event_type_name           VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt, Transfer Pricing';
20681 l_event_class_name          VARCHAR2(80) := 'Recipient-side Intransit Interorg Receipt for FOB Receipt';
20682 l_description               VARCHAR2(4000);
20683 l_transaction_reversal      NUMBER;
20684 l_ae_header_id              NUMBER;
20685 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
20686 l_log_module                VARCHAR2(240);
20687 --
20688 l_acct_reversal_source      VARCHAR2(30);
20689 l_trx_reversal_source       VARCHAR2(30);
20690 
20691 l_continue_with_lines       BOOLEAN := TRUE;
20692 --
20693 l_acc_rev_gl_date_source    DATE;                      -- 4262811
20694 --
20695 type t_array_event_id is table of number index by binary_integer;
20696 
20697 l_rec_array_event                    t_rec_array_event;
20698 l_null_rec_array_event               t_rec_array_event;
20699 l_array_ae_header_id                 xla_number_array_type;
20700 l_actual_flag                        VARCHAR2(1) := NULL;
20701 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
20702 l_balance_type_code                  VARCHAR2(1) :=NULL;
20703 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
20704 
20705 --
20706 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
20707 --
20708 
20709 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
20710 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
20711 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
20712 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
20713 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
20714 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
20715 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.ENCUMBRANCE_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
20716 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
20717 TYPE t_array_source_25 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
20718 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
20719 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
20720 TYPE t_array_source_33 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
20721 TYPE t_array_source_34 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
20722 TYPE t_array_source_35 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
20723 TYPE t_array_source_36 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
20724 TYPE t_array_source_37 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
20725 TYPE t_array_source_38 IS TABLE OF CST_XLA_INV_REF_V.BUS_FLOW_REQ_ID%TYPE INDEX BY BINARY_INTEGER;
20726 TYPE t_array_source_39 IS TABLE OF PO_REQ_DISTS_REF_V.REQ_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
20727 TYPE t_array_source_40 IS TABLE OF PO_REQ_HEADERS_REF_V.REQ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
20728 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
20729 
20730 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
20731 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
20732 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
20733 
20734 l_array_source_1              t_array_source_1;
20735 l_array_source_2              t_array_source_2;
20736 l_array_source_3              t_array_source_3;
20737 l_array_source_4              t_array_source_4;
20738 l_array_source_5              t_array_source_5;
20739 l_array_source_9              t_array_source_9;
20740 l_array_source_9_meaning      t_array_lookup_meaning;
20741 l_array_source_17              t_array_source_17;
20742 l_array_source_19              t_array_source_19;
20743 l_array_source_25              t_array_source_25;
20744 l_array_source_26              t_array_source_26;
20745 l_array_source_27              t_array_source_27;
20746 l_array_source_33              t_array_source_33;
20747 l_array_source_34              t_array_source_34;
20748 l_array_source_35              t_array_source_35;
20749 l_array_source_36              t_array_source_36;
20750 l_array_source_37              t_array_source_37;
20751 l_array_source_38              t_array_source_38;
20752 l_array_source_39              t_array_source_39;
20753 l_array_source_40              t_array_source_40;
20754 l_array_source_42              t_array_source_42;
20755 l_array_source_42_meaning      t_array_lookup_meaning;
20756 
20757 l_array_source_7      t_array_source_7;
20758 l_array_source_8      t_array_source_8;
20759 l_array_source_11      t_array_source_11;
20760 
20761 --
20762 CURSOR header_cur
20763 IS
20764 SELECT /*+ leading(xet) cardinality(xet,1) */
20765 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_TP
20766 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
20767     xet.entity_id
20768   , xet.legal_entity_id
20769   , xet.entity_code
20770   , xet.transaction_number
20771   , xet.event_id
20772   , xet.event_class_code
20773   , xet.event_type_code
20774   , xet.event_number
20775   , xet.event_date
20776   , xet.transaction_date
20777   , xet.reference_num_1
20778   , xet.reference_num_2
20779   , xet.reference_num_3
20780   , xet.reference_num_4
20781   , xet.reference_char_1
20782   , xet.reference_char_2
20783   , xet.reference_char_3
20784   , xet.reference_char_4
20785   , xet.reference_date_1
20786   , xet.reference_date_2
20787   , xet.reference_date_3
20788   , xet.reference_date_4
20789   , xet.event_created_by
20790   , xet.budgetary_control_flag 
20791   , h1.TRANSACTION_ID    source_1
20792   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
20793   , h4.TRANSACTION_QUANTITY    source_3
20794   , h4.TRANSACTION_UOM    source_4
20795   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
20796   , h1.DISTRIBUTION_TYPE    source_9
20797   , fvl9.meaning   source_9_meaning
20798   , h3.ENCUMBRANCE_REVERSAL_FLAG    source_17
20799   , h4.APPLIED_TO_APPL_ID    source_19
20800   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_25
20801   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_26
20802   , h9.CST_ENCUM_UPG_OPTION    source_27
20803   , h8.REQ_ENCUMBRANCE_FLAG    source_33
20804   , h7.REQ_RESERVED_FLAG    source_34
20805   , h4.BUS_FLOW_REQ_DIST_TYPE    source_35
20806   , h4.BUS_FLOW_REQ_ENTITY_CODE    source_36
20807   , h4.BUS_FLOW_REQ_DIST_ID    source_37
20808   , h4.BUS_FLOW_REQ_ID    source_38
20809   , h7.REQ_BUDGET_ACCOUNT    source_39
20810   , h8.REQ_ENCUMBRANCE_TYPE_ID    source_40
20811   , h1.TRANSFER_TO_GL_INDICATOR    source_42
20812   , fvl42.meaning   source_42_meaning
20813   FROM xla_events_gt     xet 
20814   , CST_XLA_INV_HEADERS_V  h1
20815   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
20816   , CST_XLA_INV_REF_V  h4
20817   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
20818   , CST_XLA_INV_TXN_TYPES_REF_V  h6
20819   , PO_REQ_DISTS_REF_V  h7
20820   , PO_REQ_HEADERS_REF_V  h8
20821   , PSA_CST_XLA_UPG_V  h9
20822   , fnd_lookup_values    fvl9
20823   , fnd_lookup_values    fvl42
20824  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
20825    and xet.event_type_code = C_EVENT_TYPE_CODE
20826    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
20827  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h5.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h4.BUS_FLOW_REQ_DIST_ID=h7.REQ_DISTRIBUTION_ID (+)  AND h4.BUS_FLOW_REQ_ID = h8.REQ_ID (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
20828   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
20829   AND fvl9.view_application_id(+) = 700
20830   AND fvl9.language(+)            = USERENV('LANG')
20831      AND fvl42.lookup_type(+)         = 'YES_NO'
20832   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
20833   AND fvl42.view_application_id(+) = 0
20834   AND fvl42.language(+)            = USERENV('LANG')
20835   
20836  ORDER BY event_id
20837 ;
20838 
20839 
20840 --
20841 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
20842 IS
20843 SELECT /*+ leading(xet) cardinality(xet,1) */
20844 -- Event Type Code: FOB_RCPT_RECIPIENT_RCPT_TP
20845 -- Event Class Code: FOB_RCPT_RECIPIENT_RCPT
20846     xet.entity_id
20847    ,xet.legal_entity_id
20848    ,xet.entity_code
20849    ,xet.transaction_number
20850    ,xet.event_id
20851    ,xet.event_class_code
20852    ,xet.event_type_code
20853    ,xet.event_number
20854    ,xet.event_date
20855    ,xet.transaction_date
20856    ,xet.reference_num_1
20857    ,xet.reference_num_2
20858    ,xet.reference_num_3
20859    ,xet.reference_num_4
20860    ,xet.reference_char_1
20861    ,xet.reference_char_2
20862    ,xet.reference_char_3
20863    ,xet.reference_char_4
20864    ,xet.reference_date_1
20865    ,xet.reference_date_2
20866    ,xet.reference_date_3
20867    ,xet.reference_date_4
20868    ,xet.event_created_by
20869    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
20870   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
20871   , l2.DISTRIBUTION_IDENTIFIER    source_8
20872   , l2.CURRENCY_CODE    source_11
20873   FROM xla_events_gt     xet 
20874   , CST_XLA_INV_LINES_V  l2
20875  WHERE xet.event_id between x_first_event_id and x_last_event_id
20876    and xet.event_date between p_pad_start_date and p_pad_end_date
20877    and xet.event_type_code = C_EVENT_TYPE_CODE
20878    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
20879 ;
20880 
20881 --
20882 BEGIN
20883 IF g_log_enabled THEN
20884    l_log_module := C_DEFAULT_MODULE||'.EventType_32';
20885 END IF;
20886 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20887    trace
20888       (p_msg      => 'BEGIN of EventType_32'
20889       ,p_level    => C_LEVEL_PROCEDURE
20890       ,p_module   => l_log_module);
20891 END IF;
20892 
20893 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20894    trace
20895       (p_msg      => 'p_application_id = '||p_application_id||
20896                      ' - p_base_ledger_id = '||p_base_ledger_id||
20897                      ' - p_target_ledger_id  = '||p_target_ledger_id||
20898                      ' - p_language = '||p_language||
20899                      ' - p_currency_code = '||p_currency_code||
20900                      ' - p_sla_ledger_id = '||p_sla_ledger_id
20901       ,p_level    => C_LEVEL_STATEMENT
20902       ,p_module   => l_log_module);
20903 END IF;
20904 --
20905 -- initialze arrays
20906 --
20907 g_array_event.DELETE;
20908 l_rec_array_event := l_null_rec_array_event;
20909 --
20910 --------------------------------------
20911 -- 4262811 Initialze MPA Line Number
20912 --------------------------------------
20913 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
20914 
20915 --
20916 
20917 --
20918 OPEN header_cur;
20919 --
20920 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
20921    trace
20922    (p_msg      => 'SQL - FETCH header_cur'
20923    ,p_level    => C_LEVEL_STATEMENT
20924    ,p_module   => l_log_module);
20925 END IF;
20926 --
20927 LOOP
20928 FETCH header_cur BULK COLLECT INTO
20929         l_array_entity_id
20930       , l_array_legal_entity_id
20931       , l_array_entity_code
20932       , l_array_transaction_num
20933       , l_array_event_id
20934       , l_array_class_code
20935       , l_array_event_type
20936       , l_array_event_number
20937       , l_array_event_date
20938       , l_array_transaction_date
20939       , l_array_reference_num_1
20940       , l_array_reference_num_2
20941       , l_array_reference_num_3
20942       , l_array_reference_num_4
20943       , l_array_reference_char_1
20944       , l_array_reference_char_2
20945       , l_array_reference_char_3
20946       , l_array_reference_char_4
20947       , l_array_reference_date_1
20948       , l_array_reference_date_2
20949       , l_array_reference_date_3
20950       , l_array_reference_date_4
20951       , l_array_event_created_by
20952       , l_array_budgetary_control_flag 
20953       , l_array_source_1
20954       , l_array_source_2
20955       , l_array_source_3
20956       , l_array_source_4
20957       , l_array_source_5
20958       , l_array_source_9
20959       , l_array_source_9_meaning
20960       , l_array_source_17
20961       , l_array_source_19
20962       , l_array_source_25
20963       , l_array_source_26
20964       , l_array_source_27
20965       , l_array_source_33
20966       , l_array_source_34
20967       , l_array_source_35
20968       , l_array_source_36
20969       , l_array_source_37
20970       , l_array_source_38
20971       , l_array_source_39
20972       , l_array_source_40
20973       , l_array_source_42
20974       , l_array_source_42_meaning
20975       LIMIT l_rows;
20976 --
20977 IF (C_LEVEL_EVENT >= g_log_level) THEN
20978    trace
20979    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
20980    ,p_level    => C_LEVEL_EVENT
20981    ,p_module   => l_log_module);
20982 END IF;
20983 --
20984 EXIT WHEN l_array_entity_id.COUNT = 0;
20985 
20986 -- initialize arrays
20987 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
20988 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
20989 
20990 --
20991 -- Bug 4458708
20992 --
20993 XLA_AE_LINES_PKG.g_LineNumber := 0;
20994 
20995 
20996 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
20997 g_last_hdr_idx := l_array_event_id.LAST;
20998 --
20999 -- loop for the headers. Each iteration is for each header extract row
21000 -- fetched in header cursor
21001 --
21002 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
21003 
21004 --
21005 -- set event info as cache for other routines to refer event attributes
21006 --
21007 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
21008    (p_application_id           => p_application_id
21009    ,p_primary_ledger_id        => p_primary_ledger_id
21010    ,p_base_ledger_id           => p_base_ledger_id
21011    ,p_target_ledger_id         => p_target_ledger_id
21012    ,p_entity_id                => l_array_entity_id(hdr_idx)
21013    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
21014    ,p_entity_code              => l_array_entity_code(hdr_idx)
21015    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
21016    ,p_event_id                 => l_array_event_id(hdr_idx)
21017    ,p_event_class_code         => l_array_class_code(hdr_idx)
21018    ,p_event_type_code          => l_array_event_type(hdr_idx)
21019    ,p_event_number             => l_array_event_number(hdr_idx)
21020    ,p_event_date               => l_array_event_date(hdr_idx)
21021    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
21022    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
21023    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
21024    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
21025    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
21026    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
21027    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
21028    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
21029    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
21030    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
21031    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
21032    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
21033    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
21034    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
21035    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
21036 
21037 --
21038 -- set the status of entry to C_VALID (0)
21039 --
21040 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
21041 
21042 --
21043 -- initialize a row for ae header
21044 --
21045 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
21046 
21047 l_event_id := l_array_event_id(hdr_idx);
21048 
21049 --
21050 -- storing the hdr_idx for event. May be used by line cursor.
21051 --
21052 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
21053 
21054 --
21055 -- store sources from header extract. This can be improved to
21056 -- store only those sources from header extract that may be used in lines
21057 --
21058 
21059 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
21060 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
21061 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
21062 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
21063 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
21064 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
21065 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
21066 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
21067 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
21068 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
21069 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
21070 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
21071 g_array_event(l_event_id).array_value_char('source_33') := l_array_source_33(hdr_idx);
21072 g_array_event(l_event_id).array_value_char('source_34') := l_array_source_34(hdr_idx);
21073 g_array_event(l_event_id).array_value_char('source_35') := l_array_source_35(hdr_idx);
21074 g_array_event(l_event_id).array_value_char('source_36') := l_array_source_36(hdr_idx);
21075 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
21076 g_array_event(l_event_id).array_value_num('source_38') := l_array_source_38(hdr_idx);
21077 g_array_event(l_event_id).array_value_num('source_39') := l_array_source_39(hdr_idx);
21078 g_array_event(l_event_id).array_value_num('source_40') := l_array_source_40(hdr_idx);
21079 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
21080 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
21081 
21082 --
21083 -- initilaize the status of ae headers for diffrent balance types
21084 -- the status is initialised to C_NOT_CREATED (2)
21085 --
21086 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
21087 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
21088 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
21089 
21090 --
21091 -- call api to validate and store accounting attributes for header
21092 --
21093 
21094 ------------------------------------------------------------
21095 -- Accrual Reversal : to get date for Standard Source (NONE)
21096 ------------------------------------------------------------
21097 l_acc_rev_gl_date_source := NULL;
21098 
21099      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
21100       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_40');
21101      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
21102       l_rec_acct_attrs.array_date_value(2) := 
21103 xla_ae_sources_pkg.GetSystemSourceDate(
21104    p_source_code           => 'XLA_REFERENCE_DATE_1'
21105  , p_source_type_code      => 'Y'
21106  , p_source_application_id =>  602
21107 );
21108      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
21109       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_42');
21110 
21111 
21112 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
21113 
21114 XLA_AE_HEADER_PKG.SetJeCategoryName;
21115 
21116 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
21117 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
21118 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
21119 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
21120 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
21121 
21122 
21123 --
21124 xla_ae_header_pkg.SetHdrDescription(
21125    p_description => Description_1 (
21126    p_application_id => p_application_id 
21127  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
21128  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
21129  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
21130  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
21131  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
21132    )
21133 );
21134 --
21135 
21136 -- No header level analytical criteria
21137 
21138 --
21139 --accounting attribute enhancement, bug 3612931
21140 --
21141 l_trx_reversal_source := SUBSTR(NULL, 1,30);
21142 
21143 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
21144    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
21145 
21146    xla_accounting_err_pkg.build_message
21147       (p_appli_s_name            => 'XLA'
21148       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
21149       ,p_token_1                 => 'ACCT_ATTR_NAME'
21150       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
21151       ,p_token_2                 => 'PRODUCT_NAME'
21152       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
21153       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
21154       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
21155       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
21156 
21157 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
21158    --
21159    -- following sets the accounting attributes needed to reverse
21160    -- accounting for a distributeion
21161    --
21162    xla_ae_lines_pkg.SetTrxReversalAttrs
21163       (p_event_id              => l_event_id
21164       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
21165       ,p_trx_reversal_source   => l_trx_reversal_source);
21166 
21167 END IF;
21168 
21169 
21170 ----------------------------------------------------------------
21171 -- 4262811 -  update the header statuses to invalid in need be
21172 ----------------------------------------------------------------
21173 --
21174 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
21175 
21176 
21177   -----------------------------------------------
21178   -- No accrual reversal for the event class/type
21179   -----------------------------------------------
21180 ----------------------------------------------------------------
21181 
21182 --
21183 -- this ends the header loop iteration for one bulk fetch
21184 --
21185 END LOOP;
21186 
21187 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
21188 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
21189 
21190 --
21191 -- insert dummy rows into lines gt table that were created due to
21192 -- transaction reversals
21193 --
21194 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
21195    l_result := XLA_AE_LINES_PKG.InsertLines;
21196 END IF;
21197 
21198 --
21199 -- reset the temp_line_num for each set of events fetched from header
21200 -- cursor rather than doing it for each new event in line cursor
21201 -- Bug 3939231
21202 --
21203 xla_ae_lines_pkg.g_temp_line_num := 0;
21204 
21205 
21206 
21207 --
21208 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
21209 --
21210 --
21211 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21212 
21213       trace
21214          (p_msg      => 'SQL - FETCH line_cur'
21215          ,p_level    => C_LEVEL_STATEMENT
21216          ,p_module   => l_log_module);
21217 
21218 END IF;
21219 --
21220 --
21221 LOOP
21222   --
21223   FETCH line_cur BULK COLLECT INTO
21224         l_array_entity_id
21225       , l_array_legal_entity_id
21226       , l_array_entity_code
21227       , l_array_transaction_num
21228       , l_array_event_id
21229       , l_array_class_code
21230       , l_array_event_type
21231       , l_array_event_number
21232       , l_array_event_date
21233       , l_array_transaction_date
21234       , l_array_reference_num_1
21235       , l_array_reference_num_2
21236       , l_array_reference_num_3
21237       , l_array_reference_num_4
21238       , l_array_reference_char_1
21239       , l_array_reference_char_2
21240       , l_array_reference_char_3
21241       , l_array_reference_char_4
21242       , l_array_reference_date_1
21243       , l_array_reference_date_2
21244       , l_array_reference_date_3
21245       , l_array_reference_date_4
21246       , l_array_event_created_by
21247       , l_array_budgetary_control_flag
21248       , l_array_extract_line_num 
21249       , l_array_source_7
21250       , l_array_source_8
21251       , l_array_source_11
21252       LIMIT l_rows;
21253 
21254   --
21255   IF (C_LEVEL_EVENT >= g_log_level) THEN
21256             trace
21257                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
21258                ,p_level    => C_LEVEL_EVENT
21259                ,p_module   => l_log_module);
21260   END IF;
21261   --
21262   EXIT WHEN l_array_entity_id.count = 0;
21263 
21264   XLA_AE_LINES_PKG.g_rec_lines := null;
21265 
21266 --
21267 -- Bug 4458708
21268 --
21269 XLA_AE_LINES_PKG.g_LineNumber := 0;
21270 --
21271 --
21272 
21273 FOR Idx IN 1..l_array_event_id.count LOOP
21274    --
21275    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
21276    --
21277    l_event_id := l_array_event_id(idx);  -- 5648433
21278 
21279    --
21280    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
21281    --
21282 
21283    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
21284              (g_array_event(l_event_id).array_value_num('header_index'))
21285          ,'N'
21286          ) <> 'Y'
21287    THEN
21288       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21289          trace
21290             (p_msg      => 'Trancaction revesal option is not Y '
21291             ,p_level    => C_LEVEL_STATEMENT
21292             ,p_module   => l_log_module);
21293       END IF;
21294 
21295 --
21296 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
21297 --
21298 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
21299 --
21300 -- set event info as cache for other routines to refer event attributes
21301 --
21302 
21303 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
21304    l_previous_event_id := l_event_id;
21305 
21306    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
21307       (p_application_id           => p_application_id
21308       ,p_primary_ledger_id        => p_primary_ledger_id
21309       ,p_base_ledger_id           => p_base_ledger_id
21310       ,p_target_ledger_id         => p_target_ledger_id
21311       ,p_entity_id                => l_array_entity_id(Idx)
21312       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
21313       ,p_entity_code              => l_array_entity_code(Idx)
21314       ,p_transaction_num          => l_array_transaction_num(Idx)
21315       ,p_event_id                 => l_array_event_id(Idx)
21316       ,p_event_class_code         => l_array_class_code(Idx)
21317       ,p_event_type_code          => l_array_event_type(Idx)
21318       ,p_event_number             => l_array_event_number(Idx)
21319       ,p_event_date               => l_array_event_date(Idx)
21320       ,p_transaction_date         => l_array_transaction_date(Idx)
21321       ,p_reference_num_1          => l_array_reference_num_1(Idx)
21322       ,p_reference_num_2          => l_array_reference_num_2(Idx)
21323       ,p_reference_num_3          => l_array_reference_num_3(Idx)
21324       ,p_reference_num_4          => l_array_reference_num_4(Idx)
21325       ,p_reference_char_1         => l_array_reference_char_1(Idx)
21326       ,p_reference_char_2         => l_array_reference_char_2(Idx)
21327       ,p_reference_char_3         => l_array_reference_char_3(Idx)
21328       ,p_reference_char_4         => l_array_reference_char_4(Idx)
21329       ,p_reference_date_1         => l_array_reference_date_1(Idx)
21330       ,p_reference_date_2         => l_array_reference_date_2(Idx)
21331       ,p_reference_date_3         => l_array_reference_date_3(Idx)
21332       ,p_reference_date_4         => l_array_reference_date_4(Idx)
21333       ,p_event_created_by         => l_array_event_created_by(Idx)
21334       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
21335        --
21336 END IF;
21337 
21338 
21339 
21340 --
21341 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
21342 
21343 l_acct_reversal_source := SUBSTR(NULL, 1,30);
21344 
21345 IF l_continue_with_lines THEN
21346    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
21347       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
21348 
21349       xla_accounting_err_pkg.build_message
21350          (p_appli_s_name            => 'XLA'
21351          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
21352          ,p_token_1                 => 'LINE_NUMBER'
21353          ,p_value_1                 => l_array_extract_line_num(Idx)
21354          ,p_token_2                 => 'PRODUCT_NAME'
21355          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
21356          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
21357          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
21358          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
21359 
21360    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
21361       --
21362       -- following sets the accounting attributes needed to reverse
21363       -- accounting for a distributeion
21364       --
21365 
21366       --
21367       -- 5217187
21368       --
21369       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
21370       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
21371                                        g_array_event(l_event_id).array_value_num('header_index'));
21372       --
21373       --
21374 
21375       -- No reversal code generated
21376 
21377       xla_ae_lines_pkg.SetAcctReversalAttrs
21378          (p_event_id             => l_event_id
21379          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
21380          ,p_calculate_acctd_flag => l_calculate_acctd_flag
21381          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
21382    END IF;
21383 
21384    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
21385        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
21386 
21387 --
21388 AcctLineType_23 (
21389  p_application_id  => p_application_id
21390  ,p_event_id     => l_event_id
21391  ,p_calculate_acctd_flag => l_calculate_acctd_flag
21392  ,p_calculate_g_l_flag => l_calculate_g_l_flag
21393  ,p_actual_flag => l_actual_flag
21394  ,p_balance_type_code => l_balance_type_code
21395  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
21396  
21397  , p_source_7 => l_array_source_7(Idx)
21398  , p_source_8 => l_array_source_8(Idx)
21399  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
21400  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
21401  , p_source_11 => l_array_source_11(Idx)
21402  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
21403  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
21404  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
21405  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
21406  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
21407  , p_source_33 => g_array_event(l_event_id).array_value_char('source_33')
21408  , p_source_34 => g_array_event(l_event_id).array_value_char('source_34')
21409  , p_source_35 => g_array_event(l_event_id).array_value_char('source_35')
21410  , p_source_36 => g_array_event(l_event_id).array_value_char('source_36')
21411  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
21412  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
21413  , p_source_39 => g_array_event(l_event_id).array_value_num('source_39')
21414  , p_source_40 => g_array_event(l_event_id).array_value_num('source_40')
21415  );
21416 If(l_balance_type_code = 'A') THEN
21417   l_actual_gain_loss_ref := l_gain_or_loss_ref;
21418 END IF;
21419 
21420 --
21421 
21422       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
21423       -- or secondary ledger that has different currency with primary
21424       -- or alc that is calculated by sla
21425       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
21426             (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'))
21427 
21428 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
21429 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
21430           AND (l_actual_flag = 'A')) THEN
21431         XLA_AE_LINES_PKG.CreateGainOrLossLines(
21432           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
21433          ,p_application_id   => p_application_id
21434          ,p_amb_context_code => 'DEFAULT'
21435          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
21436          ,p_event_class_code => C_EVENT_CLASS_CODE
21437          ,p_event_type_code  => C_EVENT_TYPE_CODE
21438          
21439          ,p_gain_ccid        => -1
21440          ,p_loss_ccid        => -1
21441 
21442          ,p_actual_flag      => l_actual_flag
21443          ,p_enc_flag         => null
21444          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
21445          ,p_enc_g_l_ref      => null
21446          );
21447       END IF;
21448    END IF;
21449 END IF;
21450 
21451    ELSE
21452       --
21453       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
21454       --
21455       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21456          trace
21457             (p_msg      => 'Trancaction revesal option is Y'
21458             ,p_level    => C_LEVEL_STATEMENT
21459             ,p_module   => l_log_module);
21460       END IF;
21461    END IF;
21462 
21463 END LOOP;
21464 l_result := XLA_AE_LINES_PKG.InsertLines ;
21465 end loop;
21466 close line_cur;
21467 
21468 
21469 --
21470 -- insert headers into xla_ae_headers_gt table
21471 --
21472 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
21473 
21474 -- insert into errors table here.
21475 
21476 END LOOP;
21477 
21478 --
21479 -- 4865292
21480 --
21481 -- Compare g_hdr_extract_count with event count in
21482 -- CreateHeadersAndLines.
21483 --
21484 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
21485 
21486 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21487    trace (p_msg     => '# rows extracted from header extract objects '
21488                     || ' (running total): '
21489                     || g_hdr_extract_count
21490          ,p_level   => C_LEVEL_STATEMENT
21491          ,p_module  => l_log_module);
21492 END IF;
21493 
21494 CLOSE header_cur;
21495 --
21496 
21497 --
21498 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21499    trace
21500       (p_msg      => 'END of EventType_32'
21501       ,p_level    => C_LEVEL_PROCEDURE
21502       ,p_module   => l_log_module);
21503 END IF;
21504 --
21505 RETURN l_result;
21506 EXCEPTION
21507 WHEN xla_exceptions_pkg.application_exception THEN
21508    
21509 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
21510 
21511    
21512 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
21513 
21514    RAISE;
21515 
21516 WHEN NO_DATA_FOUND THEN
21517 
21518 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
21519 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
21520 
21521 FOR header_record IN header_cur
21522 LOOP
21523     l_array_header_events(header_record.event_id) := header_record.event_id;
21524 END LOOP;
21525 
21526 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
21527 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
21528 
21529 fnd_file.put_line(fnd_file.LOG, '                    ');
21530 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
21531 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
21532 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
21533 
21534 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
21535 LOOP
21536 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
21537 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
21538         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
21539 	END IF;
21540 END LOOP;
21541 
21542 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
21543 fnd_file.put_line(fnd_file.LOG, '                    ');
21544 
21545 
21546 xla_exceptions_pkg.raise_message
21547       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_32');
21548 
21549 
21550 WHEN OTHERS THEN
21551    xla_exceptions_pkg.raise_message
21552       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_32');
21553 END EventType_32;
21554 --
21555 
21556 ---------------------------------------
21557 --
21558 -- PRIVATE PROCEDURE
21559 --         insert_sources_33
21560 --
21561 ----------------------------------------
21562 --
21563 PROCEDURE insert_sources_33(
21564                                 p_target_ledger_id       IN NUMBER
21565                               , p_language               IN VARCHAR2
21566                               , p_sla_ledger_id          IN NUMBER
21567                               , p_pad_start_date         IN DATE
21568                               , p_pad_end_date           IN DATE
21569                          )
21570 IS
21571 
21572 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_NO_TP';
21573 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
21574 p_apps_owner                   VARCHAR2(30);
21575 l_log_module                   VARCHAR2(240);
21576 BEGIN
21577 IF g_log_enabled THEN
21578       l_log_module := C_DEFAULT_MODULE||'.insert_sources_33';
21579 END IF;
21580 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21581 
21582       trace
21583          (p_msg      => 'BEGIN of insert_sources_33'
21584          ,p_level    => C_LEVEL_PROCEDURE
21585          ,p_module   => l_log_module);
21586 
21587 END IF;
21588 
21589 -- select APPS owner
21590 SELECT oracle_username
21591   INTO p_apps_owner
21592   FROM fnd_oracle_userid
21593  WHERE read_only_flag = 'U'
21594 ;
21595 
21596 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21597       trace
21598          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
21599                         ' - p_language = '||p_language||
21600                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
21601                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
21602                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
21603                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
21604          ,p_level    => C_LEVEL_STATEMENT
21605          ,p_module   => l_log_module);
21606 END IF;
21607 
21608 
21609 --
21610 INSERT INTO xla_diag_sources --hdr1
21611 (
21612         event_id
21613       , ledger_id
21614       , sla_ledger_id
21615       , description_language
21616       , object_name
21617       , object_type_code
21618       , line_number
21619       , source_application_id
21620       , source_type_code
21621       , source_code
21622       , source_value
21623       , source_meaning
21624       , created_by
21625       , creation_date
21626       , last_update_date
21627       , last_updated_by
21628       , last_update_login
21629       , program_update_date
21630       , program_application_id
21631       , program_id
21632       , request_id
21633 )
21634 SELECT
21635         event_id
21636       , p_target_ledger_id
21637       , p_sla_ledger_id
21638       , p_language
21639       , object_name
21640       , object_type_code
21641       , line_number
21642       , source_application_id
21643       , source_type_code
21644       , source_code
21645       , SUBSTR(source_value ,1,1996)
21646       , SUBSTR(source_meaning,1,200)
21647       , xla_environment_pkg.g_Usr_Id
21648       , TRUNC(SYSDATE)
21649       , TRUNC(SYSDATE)
21650       , xla_environment_pkg.g_Usr_Id
21651       , xla_environment_pkg.g_Login_Id
21652       , TRUNC(SYSDATE)
21653       , xla_environment_pkg.g_Prog_Appl_Id
21654       , xla_environment_pkg.g_Prog_Id
21655       , xla_environment_pkg.g_Req_Id
21656   FROM (
21657        SELECT xet.event_id                  event_id
21658             , 0                             line_number
21659             , CASE r
21660                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
21661                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
21662                 
21663                ELSE null
21664               END                           object_name
21665             , CASE r
21666                 WHEN 1 THEN 'HEADER' 
21667                 WHEN 2 THEN 'HEADER' 
21668                 
21669                 ELSE null
21670               END                           object_type_code
21671             , CASE r
21672                 WHEN 1 THEN '707' 
21673                 WHEN 2 THEN '707' 
21674                 
21675                 ELSE null
21676               END                           source_application_id
21677             , 'S'             source_type_code
21678             , CASE r
21679                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
21680                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
21681                 
21682                 ELSE null
21683               END                           source_code
21684             , CASE r
21685                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
21686                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
21687                 
21688                 ELSE null
21689               END                           source_value
21690             , CASE r
21691                 WHEN 1 THEN fvl9.meaning
21692                 WHEN 2 THEN fvl42.meaning
21693                 
21694                 ELSE null
21695               END               source_meaning
21696         FROM xla_events_gt     xet  
21697       , CST_XLA_INV_HEADERS_V  h1
21698   , fnd_lookup_values    fvl9
21699   , fnd_lookup_values    fvl42
21700             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
21701        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
21702          AND xet.event_type_code = C_EVENT_TYPE_CODE
21703             AND h1.event_id = xet.event_id
21704    AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
21705   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
21706   AND fvl9.view_application_id(+) = 700
21707   AND fvl9.language(+)            = USERENV('LANG')
21708      AND fvl42.lookup_type(+)         = 'YES_NO'
21709   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
21710   AND fvl42.view_application_id(+) = 0
21711   AND fvl42.language(+)            = USERENV('LANG')
21712   
21713 )
21714 ;
21715 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21716 
21717       trace
21718          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
21719          ,p_level    => C_LEVEL_STATEMENT
21720          ,p_module   => l_log_module);
21721 
21722 END IF;
21723 --
21724 
21725 
21726 
21727 --
21728 INSERT INTO xla_diag_sources --line1
21729 (
21730         event_id
21731       , ledger_id
21732       , sla_ledger_id
21733       , description_language
21734       , object_name
21735       , object_type_code
21736       , line_number
21737       , source_application_id
21738       , source_type_code
21739       , source_code
21740       , source_value
21741       , source_meaning
21742       , created_by
21743       , creation_date
21744       , last_update_date
21745       , last_updated_by
21746       , last_update_login
21747       , program_update_date
21748       , program_application_id
21749       , program_id
21750       , request_id
21751 )
21752 SELECT  event_id
21753       , p_target_ledger_id
21754       , p_sla_ledger_id
21755       , p_language
21756       , object_name
21757       , object_type_code
21758       , line_number
21759       , source_application_id
21760       , source_type_code
21761       , source_code
21762       , SUBSTR(source_value,1,1996)
21763       , SUBSTR(source_meaning,1,200)
21764       , xla_environment_pkg.g_Usr_Id
21765       , TRUNC(SYSDATE)
21766       , TRUNC(SYSDATE)
21767       , xla_environment_pkg.g_Usr_Id
21768       , xla_environment_pkg.g_Login_Id
21769       , TRUNC(SYSDATE)
21770       , xla_environment_pkg.g_Prog_Appl_Id
21771       , xla_environment_pkg.g_Prog_Id
21772       , xla_environment_pkg.g_Req_Id
21773   FROM (
21774        SELECT xet.event_id                  event_id
21775             , l2.line_number                 line_number
21776             , CASE r
21777                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
21778                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
21779                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
21780                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
21781                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
21782                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
21783                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
21784                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
21785                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
21786                 
21787                ELSE null
21788               END                           object_name
21789             , CASE r
21790                 WHEN 1 THEN 'LINE' 
21791                 WHEN 2 THEN 'LINE' 
21792                 WHEN 3 THEN 'LINE' 
21793                 WHEN 4 THEN 'LINE' 
21794                 WHEN 5 THEN 'LINE' 
21795                 WHEN 6 THEN 'LINE' 
21796                 WHEN 7 THEN 'LINE' 
21797                 WHEN 8 THEN 'LINE' 
21798                 WHEN 9 THEN 'LINE' 
21799                 
21800                 ELSE null
21801               END                           object_type_code
21802             , CASE r
21803                 WHEN 1 THEN '707' 
21804                 WHEN 2 THEN '707' 
21805                 WHEN 3 THEN '707' 
21806                 WHEN 4 THEN '707' 
21807                 WHEN 5 THEN '707' 
21808                 WHEN 6 THEN '707' 
21809                 WHEN 7 THEN '707' 
21810                 WHEN 8 THEN '707' 
21811                 WHEN 9 THEN '707' 
21812                 
21813                 ELSE null
21814               END                           source_application_id
21815             , 'S'             source_type_code
21816             , CASE r
21817                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
21818                 WHEN 2 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
21819                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
21820                 WHEN 4 THEN 'ENTERED_AMOUNT' 
21821                 WHEN 5 THEN 'CURRENCY_CODE' 
21822                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
21823                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
21824                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
21825                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
21826                 
21827                 ELSE null
21828               END                           source_code
21829             , CASE r
21830                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
21831                 WHEN 2 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
21832                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
21833                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
21834                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CODE)
21835                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
21836                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
21837                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
21838                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
21839                 
21840                 ELSE null
21841               END                           source_value
21842             , null              source_meaning
21843          FROM  xla_events_gt     xet  
21844         , CST_XLA_INV_LINES_V  l2
21845             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
21846         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
21847           AND xet.event_type_code = C_EVENT_TYPE_CODE
21848             AND l2.event_id          = xet.event_id
21849 
21850 )
21851 ;
21852 --
21853 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
21854 
21855       trace
21856          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
21857          ,p_level    => C_LEVEL_STATEMENT
21858          ,p_module   => l_log_module);
21859 
21860 END IF;
21861 
21862 
21863 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21864       trace
21865          (p_msg      => 'END of insert_sources_33'
21866          ,p_level    => C_LEVEL_PROCEDURE
21867          ,p_module   => l_log_module);
21868 END IF;
21869 EXCEPTION
21870   WHEN xla_exceptions_pkg.application_exception THEN
21871       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
21872             trace
21873                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
21874                ,p_level    => C_LEVEL_EXCEPTION
21875                ,p_module   => l_log_module);
21876       END IF;
21877       RAISE;
21878   WHEN OTHERS THEN
21879       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
21880             trace
21881                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
21882                ,p_level    => C_LEVEL_EXCEPTION
21883                ,p_module   => l_log_module);
21884        END IF;
21885        xla_exceptions_pkg.raise_message
21886            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_33');
21887 END insert_sources_33;
21888 --
21889 
21890 ---------------------------------------
21891 --
21892 -- PRIVATE FUNCTION
21893 --         EventType_33
21894 --
21895 ----------------------------------------
21896 --
21897 FUNCTION EventType_33
21898        (p_application_id         IN NUMBER
21899        ,p_base_ledger_id         IN NUMBER
21900        ,p_target_ledger_id       IN NUMBER
21901        ,p_language               IN VARCHAR2
21902        ,p_currency_code          IN VARCHAR2
21903        ,p_sla_ledger_id          IN NUMBER
21904        ,p_pad_start_date         IN DATE
21905        ,p_pad_end_date           IN DATE
21906        ,p_primary_ledger_id      IN NUMBER)
21907 RETURN BOOLEAN IS
21908 --
21909 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_NO_TP';
21910 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
21911 
21912 l_calculate_acctd_flag   VARCHAR2(1) :='N';
21913 l_calculate_g_l_flag     VARCHAR2(1) :='N';
21914 --
21915 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21916 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21917 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
21918 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21919 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21920 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
21921 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
21922 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21923 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21924 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21925 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21926 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21927 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21928 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
21929 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21930 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21931 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21932 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
21933 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21934 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21935 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21936 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
21937 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
21938 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
21939 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
21940 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
21941 
21942 l_event_id                             NUMBER;
21943 l_previous_event_id                    NUMBER;
21944 l_first_event_id                       NUMBER;
21945 l_last_event_id                        NUMBER;
21946 
21947 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
21948 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
21949 --
21950 --
21951 l_result                    BOOLEAN := TRUE;
21952 l_rows                      NUMBER  := 1000;
21953 l_event_type_name           VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment, no Transfer Pricing';
21954 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
21955 l_description               VARCHAR2(4000);
21956 l_transaction_reversal      NUMBER;
21957 l_ae_header_id              NUMBER;
21958 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
21959 l_log_module                VARCHAR2(240);
21960 --
21961 l_acct_reversal_source      VARCHAR2(30);
21962 l_trx_reversal_source       VARCHAR2(30);
21963 
21964 l_continue_with_lines       BOOLEAN := TRUE;
21965 --
21966 l_acc_rev_gl_date_source    DATE;                      -- 4262811
21967 --
21968 type t_array_event_id is table of number index by binary_integer;
21969 
21970 l_rec_array_event                    t_rec_array_event;
21971 l_null_rec_array_event               t_rec_array_event;
21972 l_array_ae_header_id                 xla_number_array_type;
21973 l_actual_flag                        VARCHAR2(1) := NULL;
21974 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
21975 l_balance_type_code                  VARCHAR2(1) :=NULL;
21976 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
21977 
21978 --
21979 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
21980 --
21981 
21982 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
21983 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
21984 
21985 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
21986 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
21987 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
21988 TYPE t_array_source_10 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
21989 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
21990 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
21991 TYPE t_array_source_13 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
21992 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
21993 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
21994 
21995 l_array_source_9              t_array_source_9;
21996 l_array_source_9_meaning      t_array_lookup_meaning;
21997 l_array_source_42              t_array_source_42;
21998 l_array_source_42_meaning      t_array_lookup_meaning;
21999 
22000 l_array_source_6      t_array_source_6;
22001 l_array_source_7      t_array_source_7;
22002 l_array_source_8      t_array_source_8;
22003 l_array_source_10      t_array_source_10;
22004 l_array_source_11      t_array_source_11;
22005 l_array_source_12      t_array_source_12;
22006 l_array_source_13      t_array_source_13;
22007 l_array_source_14      t_array_source_14;
22008 l_array_source_15      t_array_source_15;
22009 
22010 --
22011 CURSOR header_cur
22012 IS
22013 SELECT /*+ leading(xet) cardinality(xet,1) */
22014 -- Event Type Code: FOB_SHIP_SENDER_SHIP_NO_TP
22015 -- Event Class Code: FOB_SHIP_SENDER_SHIP
22016     xet.entity_id
22017   , xet.legal_entity_id
22018   , xet.entity_code
22019   , xet.transaction_number
22020   , xet.event_id
22021   , xet.event_class_code
22022   , xet.event_type_code
22023   , xet.event_number
22024   , xet.event_date
22025   , xet.transaction_date
22026   , xet.reference_num_1
22027   , xet.reference_num_2
22028   , xet.reference_num_3
22029   , xet.reference_num_4
22030   , xet.reference_char_1
22031   , xet.reference_char_2
22032   , xet.reference_char_3
22033   , xet.reference_char_4
22034   , xet.reference_date_1
22035   , xet.reference_date_2
22036   , xet.reference_date_3
22037   , xet.reference_date_4
22038   , xet.event_created_by
22039   , xet.budgetary_control_flag 
22040   , h1.DISTRIBUTION_TYPE    source_9
22041   , fvl9.meaning   source_9_meaning
22042   , h1.TRANSFER_TO_GL_INDICATOR    source_42
22043   , fvl42.meaning   source_42_meaning
22044   FROM xla_events_gt     xet 
22045   , CST_XLA_INV_HEADERS_V  h1
22046   , fnd_lookup_values    fvl9
22047   , fnd_lookup_values    fvl42
22048  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
22049    and xet.event_type_code = C_EVENT_TYPE_CODE
22050    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
22051    AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
22052   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
22053   AND fvl9.view_application_id(+) = 700
22054   AND fvl9.language(+)            = USERENV('LANG')
22055      AND fvl42.lookup_type(+)         = 'YES_NO'
22056   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
22057   AND fvl42.view_application_id(+) = 0
22058   AND fvl42.language(+)            = USERENV('LANG')
22059   
22060  ORDER BY event_id
22061 ;
22062 
22063 
22064 --
22065 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
22066 IS
22067 SELECT /*+ leading(xet) cardinality(xet,1) */
22068 -- Event Type Code: FOB_SHIP_SENDER_SHIP_NO_TP
22069 -- Event Class Code: FOB_SHIP_SENDER_SHIP
22070     xet.entity_id
22071    ,xet.legal_entity_id
22072    ,xet.entity_code
22073    ,xet.transaction_number
22074    ,xet.event_id
22075    ,xet.event_class_code
22076    ,xet.event_type_code
22077    ,xet.event_number
22078    ,xet.event_date
22079    ,xet.transaction_date
22080    ,xet.reference_num_1
22081    ,xet.reference_num_2
22082    ,xet.reference_num_3
22083    ,xet.reference_num_4
22084    ,xet.reference_char_1
22085    ,xet.reference_char_2
22086    ,xet.reference_char_3
22087    ,xet.reference_char_4
22088    ,xet.reference_date_1
22089    ,xet.reference_date_2
22090    ,xet.reference_date_3
22091    ,xet.reference_date_4
22092    ,xet.event_created_by
22093    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
22094   , l2.CODE_COMBINATION_ID    source_6
22095   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
22096   , l2.DISTRIBUTION_IDENTIFIER    source_8
22097   , l2.ENTERED_AMOUNT    source_10
22098   , l2.CURRENCY_CODE    source_11
22099   , l2.CURRENCY_CONVERSION_DATE    source_12
22100   , l2.CURRENCY_CONVERSION_RATE    source_13
22101   , l2.CURRENCY_CONVERSION_TYPE    source_14
22102   , l2.ACCOUNTED_AMOUNT    source_15
22103   FROM xla_events_gt     xet 
22104   , CST_XLA_INV_LINES_V  l2
22105  WHERE xet.event_id between x_first_event_id and x_last_event_id
22106    and xet.event_date between p_pad_start_date and p_pad_end_date
22107    and xet.event_type_code = C_EVENT_TYPE_CODE
22108    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
22109 ;
22110 
22111 --
22112 BEGIN
22113 IF g_log_enabled THEN
22114    l_log_module := C_DEFAULT_MODULE||'.EventType_33';
22115 END IF;
22116 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22117    trace
22118       (p_msg      => 'BEGIN of EventType_33'
22119       ,p_level    => C_LEVEL_PROCEDURE
22120       ,p_module   => l_log_module);
22121 END IF;
22122 
22123 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22124    trace
22125       (p_msg      => 'p_application_id = '||p_application_id||
22126                      ' - p_base_ledger_id = '||p_base_ledger_id||
22127                      ' - p_target_ledger_id  = '||p_target_ledger_id||
22128                      ' - p_language = '||p_language||
22129                      ' - p_currency_code = '||p_currency_code||
22130                      ' - p_sla_ledger_id = '||p_sla_ledger_id
22131       ,p_level    => C_LEVEL_STATEMENT
22132       ,p_module   => l_log_module);
22133 END IF;
22134 --
22135 -- initialze arrays
22136 --
22137 g_array_event.DELETE;
22138 l_rec_array_event := l_null_rec_array_event;
22139 --
22140 --------------------------------------
22141 -- 4262811 Initialze MPA Line Number
22142 --------------------------------------
22143 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
22144 
22145 --
22146 
22147 --
22148 OPEN header_cur;
22149 --
22150 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22151    trace
22152    (p_msg      => 'SQL - FETCH header_cur'
22153    ,p_level    => C_LEVEL_STATEMENT
22154    ,p_module   => l_log_module);
22155 END IF;
22156 --
22157 LOOP
22158 FETCH header_cur BULK COLLECT INTO
22159         l_array_entity_id
22160       , l_array_legal_entity_id
22161       , l_array_entity_code
22162       , l_array_transaction_num
22163       , l_array_event_id
22164       , l_array_class_code
22165       , l_array_event_type
22166       , l_array_event_number
22167       , l_array_event_date
22168       , l_array_transaction_date
22169       , l_array_reference_num_1
22170       , l_array_reference_num_2
22171       , l_array_reference_num_3
22172       , l_array_reference_num_4
22173       , l_array_reference_char_1
22174       , l_array_reference_char_2
22175       , l_array_reference_char_3
22176       , l_array_reference_char_4
22177       , l_array_reference_date_1
22178       , l_array_reference_date_2
22179       , l_array_reference_date_3
22180       , l_array_reference_date_4
22181       , l_array_event_created_by
22182       , l_array_budgetary_control_flag 
22183       , l_array_source_9
22184       , l_array_source_9_meaning
22185       , l_array_source_42
22186       , l_array_source_42_meaning
22187       LIMIT l_rows;
22188 --
22189 IF (C_LEVEL_EVENT >= g_log_level) THEN
22190    trace
22191    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
22192    ,p_level    => C_LEVEL_EVENT
22193    ,p_module   => l_log_module);
22194 END IF;
22195 --
22196 EXIT WHEN l_array_entity_id.COUNT = 0;
22197 
22198 -- initialize arrays
22199 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
22200 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
22201 
22202 --
22203 -- Bug 4458708
22204 --
22205 XLA_AE_LINES_PKG.g_LineNumber := 0;
22206 
22207 
22208 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
22209 g_last_hdr_idx := l_array_event_id.LAST;
22210 --
22211 -- loop for the headers. Each iteration is for each header extract row
22212 -- fetched in header cursor
22213 --
22214 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
22215 
22216 --
22217 -- set event info as cache for other routines to refer event attributes
22218 --
22219 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
22220    (p_application_id           => p_application_id
22221    ,p_primary_ledger_id        => p_primary_ledger_id
22222    ,p_base_ledger_id           => p_base_ledger_id
22223    ,p_target_ledger_id         => p_target_ledger_id
22224    ,p_entity_id                => l_array_entity_id(hdr_idx)
22225    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
22226    ,p_entity_code              => l_array_entity_code(hdr_idx)
22227    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
22228    ,p_event_id                 => l_array_event_id(hdr_idx)
22229    ,p_event_class_code         => l_array_class_code(hdr_idx)
22230    ,p_event_type_code          => l_array_event_type(hdr_idx)
22231    ,p_event_number             => l_array_event_number(hdr_idx)
22232    ,p_event_date               => l_array_event_date(hdr_idx)
22233    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
22234    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
22235    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
22236    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
22237    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
22238    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
22239    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
22240    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
22241    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
22242    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
22243    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
22244    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
22245    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
22246    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
22247    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
22248 
22249 --
22250 -- set the status of entry to C_VALID (0)
22251 --
22252 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
22253 
22254 --
22255 -- initialize a row for ae header
22256 --
22257 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
22258 
22259 l_event_id := l_array_event_id(hdr_idx);
22260 
22261 --
22262 -- storing the hdr_idx for event. May be used by line cursor.
22263 --
22264 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
22265 
22266 --
22267 -- store sources from header extract. This can be improved to
22268 -- store only those sources from header extract that may be used in lines
22269 --
22270 
22271 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
22272 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
22273 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
22274 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
22275 
22276 --
22277 -- initilaize the status of ae headers for diffrent balance types
22278 -- the status is initialised to C_NOT_CREATED (2)
22279 --
22280 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
22281 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
22282 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
22283 
22284 --
22285 -- call api to validate and store accounting attributes for header
22286 --
22287 
22288 ------------------------------------------------------------
22289 -- Accrual Reversal : to get date for Standard Source (NONE)
22290 ------------------------------------------------------------
22291 l_acc_rev_gl_date_source := NULL;
22292 
22293      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
22294       l_rec_acct_attrs.array_date_value(1) := 
22295 xla_ae_sources_pkg.GetSystemSourceDate(
22296    p_source_code           => 'XLA_REFERENCE_DATE_1'
22297  , p_source_type_code      => 'Y'
22298  , p_source_application_id =>  602
22299 );
22300      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
22301       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_42');
22302 
22303 
22304 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
22305 
22306 XLA_AE_HEADER_PKG.SetJeCategoryName;
22307 
22308 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
22309 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
22310 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
22311 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
22312 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
22313 
22314 
22315 -- No header level analytical criteria
22316 
22317 --
22318 --accounting attribute enhancement, bug 3612931
22319 --
22320 l_trx_reversal_source := SUBSTR(NULL, 1,30);
22321 
22322 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
22323    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
22324 
22325    xla_accounting_err_pkg.build_message
22326       (p_appli_s_name            => 'XLA'
22327       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
22328       ,p_token_1                 => 'ACCT_ATTR_NAME'
22329       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
22330       ,p_token_2                 => 'PRODUCT_NAME'
22331       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
22332       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
22333       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
22334       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
22335 
22336 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
22337    --
22338    -- following sets the accounting attributes needed to reverse
22339    -- accounting for a distributeion
22340    --
22341    xla_ae_lines_pkg.SetTrxReversalAttrs
22342       (p_event_id              => l_event_id
22343       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
22344       ,p_trx_reversal_source   => l_trx_reversal_source);
22345 
22346 END IF;
22347 
22348 
22349 ----------------------------------------------------------------
22350 -- 4262811 -  update the header statuses to invalid in need be
22351 ----------------------------------------------------------------
22352 --
22353 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
22354 
22355 
22356   -----------------------------------------------
22357   -- No accrual reversal for the event class/type
22358   -----------------------------------------------
22359 ----------------------------------------------------------------
22360 
22361 --
22362 -- this ends the header loop iteration for one bulk fetch
22363 --
22364 END LOOP;
22365 
22366 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
22367 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
22368 
22369 --
22370 -- insert dummy rows into lines gt table that were created due to
22371 -- transaction reversals
22372 --
22373 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
22374    l_result := XLA_AE_LINES_PKG.InsertLines;
22375 END IF;
22376 
22377 --
22378 -- reset the temp_line_num for each set of events fetched from header
22379 -- cursor rather than doing it for each new event in line cursor
22380 -- Bug 3939231
22381 --
22382 xla_ae_lines_pkg.g_temp_line_num := 0;
22383 
22384 
22385 
22386 --
22387 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
22388 --
22389 --
22390 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22391 
22392       trace
22393          (p_msg      => 'SQL - FETCH line_cur'
22394          ,p_level    => C_LEVEL_STATEMENT
22395          ,p_module   => l_log_module);
22396 
22397 END IF;
22398 --
22399 --
22400 LOOP
22401   --
22402   FETCH line_cur BULK COLLECT INTO
22403         l_array_entity_id
22404       , l_array_legal_entity_id
22405       , l_array_entity_code
22406       , l_array_transaction_num
22407       , l_array_event_id
22408       , l_array_class_code
22409       , l_array_event_type
22410       , l_array_event_number
22411       , l_array_event_date
22412       , l_array_transaction_date
22413       , l_array_reference_num_1
22414       , l_array_reference_num_2
22415       , l_array_reference_num_3
22416       , l_array_reference_num_4
22417       , l_array_reference_char_1
22418       , l_array_reference_char_2
22419       , l_array_reference_char_3
22420       , l_array_reference_char_4
22421       , l_array_reference_date_1
22422       , l_array_reference_date_2
22423       , l_array_reference_date_3
22424       , l_array_reference_date_4
22425       , l_array_event_created_by
22426       , l_array_budgetary_control_flag
22427       , l_array_extract_line_num 
22428       , l_array_source_6
22429       , l_array_source_7
22430       , l_array_source_8
22431       , l_array_source_10
22432       , l_array_source_11
22433       , l_array_source_12
22434       , l_array_source_13
22435       , l_array_source_14
22436       , l_array_source_15
22437       LIMIT l_rows;
22438 
22439   --
22440   IF (C_LEVEL_EVENT >= g_log_level) THEN
22441             trace
22442                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
22443                ,p_level    => C_LEVEL_EVENT
22444                ,p_module   => l_log_module);
22445   END IF;
22446   --
22447   EXIT WHEN l_array_entity_id.count = 0;
22448 
22449   XLA_AE_LINES_PKG.g_rec_lines := null;
22450 
22451 --
22452 -- Bug 4458708
22453 --
22454 XLA_AE_LINES_PKG.g_LineNumber := 0;
22455 --
22456 --
22457 
22458 FOR Idx IN 1..l_array_event_id.count LOOP
22459    --
22460    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
22461    --
22462    l_event_id := l_array_event_id(idx);  -- 5648433
22463 
22464    --
22465    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
22466    --
22467 
22468    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
22469              (g_array_event(l_event_id).array_value_num('header_index'))
22470          ,'N'
22471          ) <> 'Y'
22472    THEN
22473       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22474          trace
22475             (p_msg      => 'Trancaction revesal option is not Y '
22476             ,p_level    => C_LEVEL_STATEMENT
22477             ,p_module   => l_log_module);
22478       END IF;
22479 
22480 --
22481 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
22482 --
22483 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
22484 --
22485 -- set event info as cache for other routines to refer event attributes
22486 --
22487 
22488 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
22489    l_previous_event_id := l_event_id;
22490 
22491    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
22492       (p_application_id           => p_application_id
22493       ,p_primary_ledger_id        => p_primary_ledger_id
22494       ,p_base_ledger_id           => p_base_ledger_id
22495       ,p_target_ledger_id         => p_target_ledger_id
22496       ,p_entity_id                => l_array_entity_id(Idx)
22497       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
22498       ,p_entity_code              => l_array_entity_code(Idx)
22499       ,p_transaction_num          => l_array_transaction_num(Idx)
22500       ,p_event_id                 => l_array_event_id(Idx)
22501       ,p_event_class_code         => l_array_class_code(Idx)
22502       ,p_event_type_code          => l_array_event_type(Idx)
22503       ,p_event_number             => l_array_event_number(Idx)
22504       ,p_event_date               => l_array_event_date(Idx)
22505       ,p_transaction_date         => l_array_transaction_date(Idx)
22506       ,p_reference_num_1          => l_array_reference_num_1(Idx)
22507       ,p_reference_num_2          => l_array_reference_num_2(Idx)
22508       ,p_reference_num_3          => l_array_reference_num_3(Idx)
22509       ,p_reference_num_4          => l_array_reference_num_4(Idx)
22510       ,p_reference_char_1         => l_array_reference_char_1(Idx)
22511       ,p_reference_char_2         => l_array_reference_char_2(Idx)
22512       ,p_reference_char_3         => l_array_reference_char_3(Idx)
22513       ,p_reference_char_4         => l_array_reference_char_4(Idx)
22514       ,p_reference_date_1         => l_array_reference_date_1(Idx)
22515       ,p_reference_date_2         => l_array_reference_date_2(Idx)
22516       ,p_reference_date_3         => l_array_reference_date_3(Idx)
22517       ,p_reference_date_4         => l_array_reference_date_4(Idx)
22518       ,p_event_created_by         => l_array_event_created_by(Idx)
22519       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
22520        --
22521 END IF;
22522 
22523 
22524 
22525 --
22526 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
22527 
22528 l_acct_reversal_source := SUBSTR(NULL, 1,30);
22529 
22530 IF l_continue_with_lines THEN
22531    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
22532       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
22533 
22534       xla_accounting_err_pkg.build_message
22535          (p_appli_s_name            => 'XLA'
22536          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
22537          ,p_token_1                 => 'LINE_NUMBER'
22538          ,p_value_1                 => l_array_extract_line_num(Idx)
22539          ,p_token_2                 => 'PRODUCT_NAME'
22540          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
22541          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
22542          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
22543          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
22544 
22545    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
22546       --
22547       -- following sets the accounting attributes needed to reverse
22548       -- accounting for a distributeion
22549       --
22550 
22551       --
22552       -- 5217187
22553       --
22554       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
22555       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
22556                                        g_array_event(l_event_id).array_value_num('header_index'));
22557       --
22558       --
22559 
22560       -- No reversal code generated
22561 
22562       xla_ae_lines_pkg.SetAcctReversalAttrs
22563          (p_event_id             => l_event_id
22564          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
22565          ,p_calculate_acctd_flag => l_calculate_acctd_flag
22566          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
22567    END IF;
22568 
22569    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
22570        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
22571 
22572 --
22573 AcctLineType_26 (
22574  p_application_id  => p_application_id
22575  ,p_event_id     => l_event_id
22576  ,p_calculate_acctd_flag => l_calculate_acctd_flag
22577  ,p_calculate_g_l_flag => l_calculate_g_l_flag
22578  ,p_actual_flag => l_actual_flag
22579  ,p_balance_type_code => l_balance_type_code
22580  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
22581  
22582  , p_source_6 => l_array_source_6(Idx)
22583  , p_source_7 => l_array_source_7(Idx)
22584  , p_source_8 => l_array_source_8(Idx)
22585  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
22586  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
22587  , p_source_10 => l_array_source_10(Idx)
22588  , p_source_11 => l_array_source_11(Idx)
22589  , p_source_12 => l_array_source_12(Idx)
22590  , p_source_13 => l_array_source_13(Idx)
22591  , p_source_14 => l_array_source_14(Idx)
22592  , p_source_15 => l_array_source_15(Idx)
22593  );
22594 If(l_balance_type_code = 'A') THEN
22595   l_actual_gain_loss_ref := l_gain_or_loss_ref;
22596 END IF;
22597 
22598 --
22599 
22600       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
22601       -- or secondary ledger that has different currency with primary
22602       -- or alc that is calculated by sla
22603       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
22604             (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'))
22605 
22606 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
22607 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
22608           AND (l_actual_flag = 'A')) THEN
22609         XLA_AE_LINES_PKG.CreateGainOrLossLines(
22610           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
22611          ,p_application_id   => p_application_id
22612          ,p_amb_context_code => 'DEFAULT'
22613          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
22614          ,p_event_class_code => C_EVENT_CLASS_CODE
22615          ,p_event_type_code  => C_EVENT_TYPE_CODE
22616          
22617          ,p_gain_ccid        => -1
22618          ,p_loss_ccid        => -1
22619 
22620          ,p_actual_flag      => l_actual_flag
22621          ,p_enc_flag         => null
22622          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
22623          ,p_enc_g_l_ref      => null
22624          );
22625       END IF;
22626    END IF;
22627 END IF;
22628 
22629    ELSE
22630       --
22631       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
22632       --
22633       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22634          trace
22635             (p_msg      => 'Trancaction revesal option is Y'
22636             ,p_level    => C_LEVEL_STATEMENT
22637             ,p_module   => l_log_module);
22638       END IF;
22639    END IF;
22640 
22641 END LOOP;
22642 l_result := XLA_AE_LINES_PKG.InsertLines ;
22643 end loop;
22644 close line_cur;
22645 
22646 
22647 --
22648 -- insert headers into xla_ae_headers_gt table
22649 --
22650 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
22651 
22652 -- insert into errors table here.
22653 
22654 END LOOP;
22655 
22656 --
22657 -- 4865292
22658 --
22659 -- Compare g_hdr_extract_count with event count in
22660 -- CreateHeadersAndLines.
22661 --
22662 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
22663 
22664 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22665    trace (p_msg     => '# rows extracted from header extract objects '
22666                     || ' (running total): '
22667                     || g_hdr_extract_count
22668          ,p_level   => C_LEVEL_STATEMENT
22669          ,p_module  => l_log_module);
22670 END IF;
22671 
22672 CLOSE header_cur;
22673 --
22674 
22675 --
22676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22677    trace
22678       (p_msg      => 'END of EventType_33'
22679       ,p_level    => C_LEVEL_PROCEDURE
22680       ,p_module   => l_log_module);
22681 END IF;
22682 --
22683 RETURN l_result;
22684 EXCEPTION
22685 WHEN xla_exceptions_pkg.application_exception THEN
22686    
22687 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
22688 
22689    
22690 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
22691 
22692    RAISE;
22693 
22694 WHEN NO_DATA_FOUND THEN
22695 
22696 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
22697 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
22698 
22699 FOR header_record IN header_cur
22700 LOOP
22701     l_array_header_events(header_record.event_id) := header_record.event_id;
22702 END LOOP;
22703 
22704 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
22705 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
22706 
22707 fnd_file.put_line(fnd_file.LOG, '                    ');
22708 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
22709 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
22710 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
22711 
22712 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
22713 LOOP
22714 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
22715 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
22716         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
22717 	END IF;
22718 END LOOP;
22719 
22720 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
22721 fnd_file.put_line(fnd_file.LOG, '                    ');
22722 
22723 
22724 xla_exceptions_pkg.raise_message
22725       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_33');
22726 
22727 
22728 WHEN OTHERS THEN
22729    xla_exceptions_pkg.raise_message
22730       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_33');
22731 END EventType_33;
22732 --
22733 
22734 ---------------------------------------
22735 --
22736 -- PRIVATE PROCEDURE
22737 --         insert_sources_34
22738 --
22739 ----------------------------------------
22740 --
22741 PROCEDURE insert_sources_34(
22742                                 p_target_ledger_id       IN NUMBER
22743                               , p_language               IN VARCHAR2
22744                               , p_sla_ledger_id          IN NUMBER
22745                               , p_pad_start_date         IN DATE
22746                               , p_pad_end_date           IN DATE
22747                          )
22748 IS
22749 
22750 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_TP';
22751 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
22752 p_apps_owner                   VARCHAR2(30);
22753 l_log_module                   VARCHAR2(240);
22754 BEGIN
22755 IF g_log_enabled THEN
22756       l_log_module := C_DEFAULT_MODULE||'.insert_sources_34';
22757 END IF;
22758 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22759 
22760       trace
22761          (p_msg      => 'BEGIN of insert_sources_34'
22762          ,p_level    => C_LEVEL_PROCEDURE
22763          ,p_module   => l_log_module);
22764 
22765 END IF;
22766 
22767 -- select APPS owner
22768 SELECT oracle_username
22769   INTO p_apps_owner
22770   FROM fnd_oracle_userid
22771  WHERE read_only_flag = 'U'
22772 ;
22773 
22774 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22775       trace
22776          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
22777                         ' - p_language = '||p_language||
22778                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
22779                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
22780                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
22781                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
22782          ,p_level    => C_LEVEL_STATEMENT
22783          ,p_module   => l_log_module);
22784 END IF;
22785 
22786 
22787 --
22788 INSERT INTO xla_diag_sources --hdr1
22789 (
22790         event_id
22791       , ledger_id
22792       , sla_ledger_id
22793       , description_language
22794       , object_name
22795       , object_type_code
22796       , line_number
22797       , source_application_id
22798       , source_type_code
22799       , source_code
22800       , source_value
22801       , source_meaning
22802       , created_by
22803       , creation_date
22804       , last_update_date
22805       , last_updated_by
22806       , last_update_login
22807       , program_update_date
22808       , program_application_id
22809       , program_id
22810       , request_id
22811 )
22812 SELECT
22813         event_id
22814       , p_target_ledger_id
22815       , p_sla_ledger_id
22816       , p_language
22817       , object_name
22818       , object_type_code
22819       , line_number
22820       , source_application_id
22821       , source_type_code
22822       , source_code
22823       , SUBSTR(source_value ,1,1996)
22824       , SUBSTR(source_meaning,1,200)
22825       , xla_environment_pkg.g_Usr_Id
22826       , TRUNC(SYSDATE)
22827       , TRUNC(SYSDATE)
22828       , xla_environment_pkg.g_Usr_Id
22829       , xla_environment_pkg.g_Login_Id
22830       , TRUNC(SYSDATE)
22831       , xla_environment_pkg.g_Prog_Appl_Id
22832       , xla_environment_pkg.g_Prog_Id
22833       , xla_environment_pkg.g_Req_Id
22834   FROM (
22835        SELECT xet.event_id                  event_id
22836             , 0                             line_number
22837             , CASE r
22838                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
22839                 WHEN 2 THEN 'CST_XLA_INV_HEADERS_V' 
22840                 
22841                ELSE null
22842               END                           object_name
22843             , CASE r
22844                 WHEN 1 THEN 'HEADER' 
22845                 WHEN 2 THEN 'HEADER' 
22846                 
22847                 ELSE null
22848               END                           object_type_code
22849             , CASE r
22850                 WHEN 1 THEN '707' 
22851                 WHEN 2 THEN '707' 
22852                 
22853                 ELSE null
22854               END                           source_application_id
22855             , 'S'             source_type_code
22856             , CASE r
22857                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
22858                 WHEN 2 THEN 'TRANSFER_TO_GL_INDICATOR' 
22859                 
22860                 ELSE null
22861               END                           source_code
22862             , CASE r
22863                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
22864                 WHEN 2 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
22865                 
22866                 ELSE null
22867               END                           source_value
22868             , CASE r
22869                 WHEN 1 THEN fvl9.meaning
22870                 WHEN 2 THEN fvl42.meaning
22871                 
22872                 ELSE null
22873               END               source_meaning
22874         FROM xla_events_gt     xet  
22875       , CST_XLA_INV_HEADERS_V  h1
22876   , fnd_lookup_values    fvl9
22877   , fnd_lookup_values    fvl42
22878             ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
22879        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
22880          AND xet.event_type_code = C_EVENT_TYPE_CODE
22881             AND h1.event_id = xet.event_id
22882    AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
22883   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
22884   AND fvl9.view_application_id(+) = 700
22885   AND fvl9.language(+)            = USERENV('LANG')
22886      AND fvl42.lookup_type(+)         = 'YES_NO'
22887   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
22888   AND fvl42.view_application_id(+) = 0
22889   AND fvl42.language(+)            = USERENV('LANG')
22890   
22891 )
22892 ;
22893 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
22894 
22895       trace
22896          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
22897          ,p_level    => C_LEVEL_STATEMENT
22898          ,p_module   => l_log_module);
22899 
22900 END IF;
22901 --
22902 
22903 
22904 
22905 --
22906 INSERT INTO xla_diag_sources --line1
22907 (
22908         event_id
22909       , ledger_id
22910       , sla_ledger_id
22911       , description_language
22912       , object_name
22913       , object_type_code
22914       , line_number
22915       , source_application_id
22916       , source_type_code
22917       , source_code
22918       , source_value
22919       , source_meaning
22920       , created_by
22921       , creation_date
22922       , last_update_date
22923       , last_updated_by
22924       , last_update_login
22925       , program_update_date
22926       , program_application_id
22927       , program_id
22928       , request_id
22929 )
22930 SELECT  event_id
22931       , p_target_ledger_id
22932       , p_sla_ledger_id
22933       , p_language
22934       , object_name
22935       , object_type_code
22936       , line_number
22937       , source_application_id
22938       , source_type_code
22939       , source_code
22940       , SUBSTR(source_value,1,1996)
22941       , SUBSTR(source_meaning,1,200)
22942       , xla_environment_pkg.g_Usr_Id
22943       , TRUNC(SYSDATE)
22944       , TRUNC(SYSDATE)
22945       , xla_environment_pkg.g_Usr_Id
22946       , xla_environment_pkg.g_Login_Id
22947       , TRUNC(SYSDATE)
22948       , xla_environment_pkg.g_Prog_Appl_Id
22949       , xla_environment_pkg.g_Prog_Id
22950       , xla_environment_pkg.g_Req_Id
22951   FROM (
22952        SELECT xet.event_id                  event_id
22953             , l2.line_number                 line_number
22954             , CASE r
22955                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
22956                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
22957                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
22958                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
22959                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
22960                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
22961                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
22962                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
22963                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
22964                 
22965                ELSE null
22966               END                           object_name
22967             , CASE r
22968                 WHEN 1 THEN 'LINE' 
22969                 WHEN 2 THEN 'LINE' 
22970                 WHEN 3 THEN 'LINE' 
22971                 WHEN 4 THEN 'LINE' 
22972                 WHEN 5 THEN 'LINE' 
22973                 WHEN 6 THEN 'LINE' 
22974                 WHEN 7 THEN 'LINE' 
22975                 WHEN 8 THEN 'LINE' 
22976                 WHEN 9 THEN 'LINE' 
22977                 
22978                 ELSE null
22979               END                           object_type_code
22980             , CASE r
22981                 WHEN 1 THEN '707' 
22982                 WHEN 2 THEN '707' 
22983                 WHEN 3 THEN '707' 
22984                 WHEN 4 THEN '707' 
22985                 WHEN 5 THEN '707' 
22986                 WHEN 6 THEN '707' 
22987                 WHEN 7 THEN '707' 
22988                 WHEN 8 THEN '707' 
22989                 WHEN 9 THEN '707' 
22990                 
22991                 ELSE null
22992               END                           source_application_id
22993             , 'S'             source_type_code
22994             , CASE r
22995                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
22996                 WHEN 2 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
22997                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
22998                 WHEN 4 THEN 'ENTERED_AMOUNT' 
22999                 WHEN 5 THEN 'CURRENCY_CODE' 
23000                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
23001                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
23002                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
23003                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
23004                 
23005                 ELSE null
23006               END                           source_code
23007             , CASE r
23008                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
23009                 WHEN 2 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
23010                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
23011                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
23012                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CODE)
23013                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
23014                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
23015                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
23016                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
23017                 
23018                 ELSE null
23019               END                           source_value
23020             , null              source_meaning
23021          FROM  xla_events_gt     xet  
23022         , CST_XLA_INV_LINES_V  l2
23023             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
23024         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
23025           AND xet.event_type_code = C_EVENT_TYPE_CODE
23026             AND l2.event_id          = xet.event_id
23027 
23028 )
23029 ;
23030 --
23031 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23032 
23033       trace
23034          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
23035          ,p_level    => C_LEVEL_STATEMENT
23036          ,p_module   => l_log_module);
23037 
23038 END IF;
23039 
23040 
23041 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23042       trace
23043          (p_msg      => 'END of insert_sources_34'
23044          ,p_level    => C_LEVEL_PROCEDURE
23045          ,p_module   => l_log_module);
23046 END IF;
23047 EXCEPTION
23048   WHEN xla_exceptions_pkg.application_exception THEN
23049       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
23050             trace
23051                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
23052                ,p_level    => C_LEVEL_EXCEPTION
23053                ,p_module   => l_log_module);
23054       END IF;
23055       RAISE;
23056   WHEN OTHERS THEN
23057       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
23058             trace
23059                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
23060                ,p_level    => C_LEVEL_EXCEPTION
23061                ,p_module   => l_log_module);
23062        END IF;
23063        xla_exceptions_pkg.raise_message
23064            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_34');
23065 END insert_sources_34;
23066 --
23067 
23068 ---------------------------------------
23069 --
23070 -- PRIVATE FUNCTION
23071 --         EventType_34
23072 --
23073 ----------------------------------------
23074 --
23075 FUNCTION EventType_34
23076        (p_application_id         IN NUMBER
23077        ,p_base_ledger_id         IN NUMBER
23078        ,p_target_ledger_id       IN NUMBER
23079        ,p_language               IN VARCHAR2
23080        ,p_currency_code          IN VARCHAR2
23081        ,p_sla_ledger_id          IN NUMBER
23082        ,p_pad_start_date         IN DATE
23083        ,p_pad_end_date           IN DATE
23084        ,p_primary_ledger_id      IN NUMBER)
23085 RETURN BOOLEAN IS
23086 --
23087 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FOB_SHIP_SENDER_SHIP_TP';
23088 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FOB_SHIP_SENDER_SHIP';
23089 
23090 l_calculate_acctd_flag   VARCHAR2(1) :='N';
23091 l_calculate_g_l_flag     VARCHAR2(1) :='N';
23092 --
23093 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23094 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23095 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
23096 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23097 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23098 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
23099 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
23100 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23101 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23102 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23103 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23104 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23105 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23106 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
23107 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23108 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23109 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23110 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
23111 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23112 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23113 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23114 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
23115 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
23116 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
23117 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
23118 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
23119 
23120 l_event_id                             NUMBER;
23121 l_previous_event_id                    NUMBER;
23122 l_first_event_id                       NUMBER;
23123 l_last_event_id                        NUMBER;
23124 
23125 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
23126 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
23127 --
23128 --
23129 l_result                    BOOLEAN := TRUE;
23130 l_rows                      NUMBER  := 1000;
23131 l_event_type_name           VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment, Transfer Pricing';
23132 l_event_class_name          VARCHAR2(80) := 'Sender-side Intransit Interorg Shipment for FOB Shipment';
23133 l_description               VARCHAR2(4000);
23134 l_transaction_reversal      NUMBER;
23135 l_ae_header_id              NUMBER;
23136 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
23137 l_log_module                VARCHAR2(240);
23138 --
23139 l_acct_reversal_source      VARCHAR2(30);
23140 l_trx_reversal_source       VARCHAR2(30);
23141 
23142 l_continue_with_lines       BOOLEAN := TRUE;
23143 --
23144 l_acc_rev_gl_date_source    DATE;                      -- 4262811
23145 --
23146 type t_array_event_id is table of number index by binary_integer;
23147 
23148 l_rec_array_event                    t_rec_array_event;
23149 l_null_rec_array_event               t_rec_array_event;
23150 l_array_ae_header_id                 xla_number_array_type;
23151 l_actual_flag                        VARCHAR2(1) := NULL;
23152 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
23153 l_balance_type_code                  VARCHAR2(1) :=NULL;
23154 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
23155 
23156 --
23157 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
23158 --
23159 
23160 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
23161 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
23162 
23163 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
23164 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
23165 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
23166 TYPE t_array_source_10 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
23167 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
23168 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
23169 TYPE t_array_source_13 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
23170 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
23171 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
23172 
23173 l_array_source_9              t_array_source_9;
23174 l_array_source_9_meaning      t_array_lookup_meaning;
23175 l_array_source_42              t_array_source_42;
23176 l_array_source_42_meaning      t_array_lookup_meaning;
23177 
23178 l_array_source_6      t_array_source_6;
23179 l_array_source_7      t_array_source_7;
23180 l_array_source_8      t_array_source_8;
23181 l_array_source_10      t_array_source_10;
23182 l_array_source_11      t_array_source_11;
23183 l_array_source_12      t_array_source_12;
23184 l_array_source_13      t_array_source_13;
23185 l_array_source_14      t_array_source_14;
23186 l_array_source_15      t_array_source_15;
23187 
23188 --
23189 CURSOR header_cur
23190 IS
23191 SELECT /*+ leading(xet) cardinality(xet,1) */
23192 -- Event Type Code: FOB_SHIP_SENDER_SHIP_TP
23193 -- Event Class Code: FOB_SHIP_SENDER_SHIP
23194     xet.entity_id
23195   , xet.legal_entity_id
23196   , xet.entity_code
23197   , xet.transaction_number
23198   , xet.event_id
23199   , xet.event_class_code
23200   , xet.event_type_code
23201   , xet.event_number
23202   , xet.event_date
23203   , xet.transaction_date
23204   , xet.reference_num_1
23205   , xet.reference_num_2
23206   , xet.reference_num_3
23207   , xet.reference_num_4
23208   , xet.reference_char_1
23209   , xet.reference_char_2
23210   , xet.reference_char_3
23211   , xet.reference_char_4
23212   , xet.reference_date_1
23213   , xet.reference_date_2
23214   , xet.reference_date_3
23215   , xet.reference_date_4
23216   , xet.event_created_by
23217   , xet.budgetary_control_flag 
23218   , h1.DISTRIBUTION_TYPE    source_9
23219   , fvl9.meaning   source_9_meaning
23220   , h1.TRANSFER_TO_GL_INDICATOR    source_42
23221   , fvl42.meaning   source_42_meaning
23222   FROM xla_events_gt     xet 
23223   , CST_XLA_INV_HEADERS_V  h1
23224   , fnd_lookup_values    fvl9
23225   , fnd_lookup_values    fvl42
23226  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
23227    and xet.event_type_code = C_EVENT_TYPE_CODE
23228    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
23229    AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
23230   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
23231   AND fvl9.view_application_id(+) = 700
23232   AND fvl9.language(+)            = USERENV('LANG')
23233      AND fvl42.lookup_type(+)         = 'YES_NO'
23234   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
23235   AND fvl42.view_application_id(+) = 0
23236   AND fvl42.language(+)            = USERENV('LANG')
23237   
23238  ORDER BY event_id
23239 ;
23240 
23241 
23242 --
23243 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
23244 IS
23245 SELECT /*+ leading(xet) cardinality(xet,1) */
23246 -- Event Type Code: FOB_SHIP_SENDER_SHIP_TP
23247 -- Event Class Code: FOB_SHIP_SENDER_SHIP
23248     xet.entity_id
23249    ,xet.legal_entity_id
23250    ,xet.entity_code
23251    ,xet.transaction_number
23252    ,xet.event_id
23253    ,xet.event_class_code
23254    ,xet.event_type_code
23255    ,xet.event_number
23256    ,xet.event_date
23257    ,xet.transaction_date
23258    ,xet.reference_num_1
23259    ,xet.reference_num_2
23260    ,xet.reference_num_3
23261    ,xet.reference_num_4
23262    ,xet.reference_char_1
23263    ,xet.reference_char_2
23264    ,xet.reference_char_3
23265    ,xet.reference_char_4
23266    ,xet.reference_date_1
23267    ,xet.reference_date_2
23268    ,xet.reference_date_3
23269    ,xet.reference_date_4
23270    ,xet.event_created_by
23271    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
23272   , l2.CODE_COMBINATION_ID    source_6
23273   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
23274   , l2.DISTRIBUTION_IDENTIFIER    source_8
23275   , l2.ENTERED_AMOUNT    source_10
23276   , l2.CURRENCY_CODE    source_11
23277   , l2.CURRENCY_CONVERSION_DATE    source_12
23278   , l2.CURRENCY_CONVERSION_RATE    source_13
23279   , l2.CURRENCY_CONVERSION_TYPE    source_14
23280   , l2.ACCOUNTED_AMOUNT    source_15
23281   FROM xla_events_gt     xet 
23282   , CST_XLA_INV_LINES_V  l2
23283  WHERE xet.event_id between x_first_event_id and x_last_event_id
23284    and xet.event_date between p_pad_start_date and p_pad_end_date
23285    and xet.event_type_code = C_EVENT_TYPE_CODE
23286    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
23287 ;
23288 
23289 --
23290 BEGIN
23291 IF g_log_enabled THEN
23292    l_log_module := C_DEFAULT_MODULE||'.EventType_34';
23293 END IF;
23294 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23295    trace
23296       (p_msg      => 'BEGIN of EventType_34'
23297       ,p_level    => C_LEVEL_PROCEDURE
23298       ,p_module   => l_log_module);
23299 END IF;
23300 
23301 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23302    trace
23303       (p_msg      => 'p_application_id = '||p_application_id||
23304                      ' - p_base_ledger_id = '||p_base_ledger_id||
23305                      ' - p_target_ledger_id  = '||p_target_ledger_id||
23306                      ' - p_language = '||p_language||
23307                      ' - p_currency_code = '||p_currency_code||
23308                      ' - p_sla_ledger_id = '||p_sla_ledger_id
23309       ,p_level    => C_LEVEL_STATEMENT
23310       ,p_module   => l_log_module);
23311 END IF;
23312 --
23313 -- initialze arrays
23314 --
23315 g_array_event.DELETE;
23316 l_rec_array_event := l_null_rec_array_event;
23317 --
23318 --------------------------------------
23319 -- 4262811 Initialze MPA Line Number
23320 --------------------------------------
23321 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
23322 
23323 --
23324 
23325 --
23326 OPEN header_cur;
23327 --
23328 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23329    trace
23330    (p_msg      => 'SQL - FETCH header_cur'
23331    ,p_level    => C_LEVEL_STATEMENT
23332    ,p_module   => l_log_module);
23333 END IF;
23334 --
23335 LOOP
23336 FETCH header_cur BULK COLLECT INTO
23337         l_array_entity_id
23338       , l_array_legal_entity_id
23339       , l_array_entity_code
23340       , l_array_transaction_num
23341       , l_array_event_id
23342       , l_array_class_code
23343       , l_array_event_type
23344       , l_array_event_number
23345       , l_array_event_date
23346       , l_array_transaction_date
23347       , l_array_reference_num_1
23348       , l_array_reference_num_2
23349       , l_array_reference_num_3
23350       , l_array_reference_num_4
23351       , l_array_reference_char_1
23352       , l_array_reference_char_2
23353       , l_array_reference_char_3
23354       , l_array_reference_char_4
23355       , l_array_reference_date_1
23356       , l_array_reference_date_2
23357       , l_array_reference_date_3
23358       , l_array_reference_date_4
23359       , l_array_event_created_by
23360       , l_array_budgetary_control_flag 
23361       , l_array_source_9
23362       , l_array_source_9_meaning
23363       , l_array_source_42
23364       , l_array_source_42_meaning
23365       LIMIT l_rows;
23366 --
23367 IF (C_LEVEL_EVENT >= g_log_level) THEN
23368    trace
23369    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
23370    ,p_level    => C_LEVEL_EVENT
23371    ,p_module   => l_log_module);
23372 END IF;
23373 --
23374 EXIT WHEN l_array_entity_id.COUNT = 0;
23375 
23376 -- initialize arrays
23377 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
23378 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
23379 
23380 --
23381 -- Bug 4458708
23382 --
23383 XLA_AE_LINES_PKG.g_LineNumber := 0;
23384 
23385 
23386 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
23387 g_last_hdr_idx := l_array_event_id.LAST;
23388 --
23389 -- loop for the headers. Each iteration is for each header extract row
23390 -- fetched in header cursor
23391 --
23392 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
23393 
23394 --
23395 -- set event info as cache for other routines to refer event attributes
23396 --
23397 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
23398    (p_application_id           => p_application_id
23399    ,p_primary_ledger_id        => p_primary_ledger_id
23400    ,p_base_ledger_id           => p_base_ledger_id
23401    ,p_target_ledger_id         => p_target_ledger_id
23402    ,p_entity_id                => l_array_entity_id(hdr_idx)
23403    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
23404    ,p_entity_code              => l_array_entity_code(hdr_idx)
23405    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
23406    ,p_event_id                 => l_array_event_id(hdr_idx)
23407    ,p_event_class_code         => l_array_class_code(hdr_idx)
23408    ,p_event_type_code          => l_array_event_type(hdr_idx)
23409    ,p_event_number             => l_array_event_number(hdr_idx)
23410    ,p_event_date               => l_array_event_date(hdr_idx)
23411    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
23412    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
23413    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
23414    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
23415    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
23416    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
23417    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
23418    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
23419    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
23420    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
23421    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
23422    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
23423    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
23424    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
23425    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
23426 
23427 --
23428 -- set the status of entry to C_VALID (0)
23429 --
23430 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
23431 
23432 --
23433 -- initialize a row for ae header
23434 --
23435 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
23436 
23437 l_event_id := l_array_event_id(hdr_idx);
23438 
23439 --
23440 -- storing the hdr_idx for event. May be used by line cursor.
23441 --
23442 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
23443 
23444 --
23445 -- store sources from header extract. This can be improved to
23446 -- store only those sources from header extract that may be used in lines
23447 --
23448 
23449 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
23450 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
23451 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
23452 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
23453 
23454 --
23455 -- initilaize the status of ae headers for diffrent balance types
23456 -- the status is initialised to C_NOT_CREATED (2)
23457 --
23458 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
23459 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
23460 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
23461 
23462 --
23463 -- call api to validate and store accounting attributes for header
23464 --
23465 
23466 ------------------------------------------------------------
23467 -- Accrual Reversal : to get date for Standard Source (NONE)
23468 ------------------------------------------------------------
23469 l_acc_rev_gl_date_source := NULL;
23470 
23471      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
23472       l_rec_acct_attrs.array_date_value(1) := 
23473 xla_ae_sources_pkg.GetSystemSourceDate(
23474    p_source_code           => 'XLA_REFERENCE_DATE_1'
23475  , p_source_type_code      => 'Y'
23476  , p_source_application_id =>  602
23477 );
23478      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
23479       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_42');
23480 
23481 
23482 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
23483 
23484 XLA_AE_HEADER_PKG.SetJeCategoryName;
23485 
23486 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
23487 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
23488 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
23489 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
23490 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
23491 
23492 
23493 -- No header level analytical criteria
23494 
23495 --
23496 --accounting attribute enhancement, bug 3612931
23497 --
23498 l_trx_reversal_source := SUBSTR(NULL, 1,30);
23499 
23500 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
23501    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
23502 
23503    xla_accounting_err_pkg.build_message
23504       (p_appli_s_name            => 'XLA'
23505       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
23506       ,p_token_1                 => 'ACCT_ATTR_NAME'
23507       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
23508       ,p_token_2                 => 'PRODUCT_NAME'
23509       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
23510       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
23511       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
23512       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
23513 
23514 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
23515    --
23516    -- following sets the accounting attributes needed to reverse
23517    -- accounting for a distributeion
23518    --
23519    xla_ae_lines_pkg.SetTrxReversalAttrs
23520       (p_event_id              => l_event_id
23521       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
23522       ,p_trx_reversal_source   => l_trx_reversal_source);
23523 
23524 END IF;
23525 
23526 
23527 ----------------------------------------------------------------
23528 -- 4262811 -  update the header statuses to invalid in need be
23529 ----------------------------------------------------------------
23530 --
23531 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
23532 
23533 
23534   -----------------------------------------------
23535   -- No accrual reversal for the event class/type
23536   -----------------------------------------------
23537 ----------------------------------------------------------------
23538 
23539 --
23540 -- this ends the header loop iteration for one bulk fetch
23541 --
23542 END LOOP;
23543 
23544 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
23545 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
23546 
23547 --
23548 -- insert dummy rows into lines gt table that were created due to
23549 -- transaction reversals
23550 --
23551 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
23552    l_result := XLA_AE_LINES_PKG.InsertLines;
23553 END IF;
23554 
23555 --
23556 -- reset the temp_line_num for each set of events fetched from header
23557 -- cursor rather than doing it for each new event in line cursor
23558 -- Bug 3939231
23559 --
23560 xla_ae_lines_pkg.g_temp_line_num := 0;
23561 
23562 
23563 
23564 --
23565 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
23566 --
23567 --
23568 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23569 
23570       trace
23571          (p_msg      => 'SQL - FETCH line_cur'
23572          ,p_level    => C_LEVEL_STATEMENT
23573          ,p_module   => l_log_module);
23574 
23575 END IF;
23576 --
23577 --
23578 LOOP
23579   --
23580   FETCH line_cur BULK COLLECT INTO
23581         l_array_entity_id
23582       , l_array_legal_entity_id
23583       , l_array_entity_code
23584       , l_array_transaction_num
23585       , l_array_event_id
23586       , l_array_class_code
23587       , l_array_event_type
23588       , l_array_event_number
23589       , l_array_event_date
23590       , l_array_transaction_date
23591       , l_array_reference_num_1
23592       , l_array_reference_num_2
23593       , l_array_reference_num_3
23594       , l_array_reference_num_4
23595       , l_array_reference_char_1
23596       , l_array_reference_char_2
23597       , l_array_reference_char_3
23598       , l_array_reference_char_4
23599       , l_array_reference_date_1
23600       , l_array_reference_date_2
23601       , l_array_reference_date_3
23602       , l_array_reference_date_4
23603       , l_array_event_created_by
23604       , l_array_budgetary_control_flag
23605       , l_array_extract_line_num 
23606       , l_array_source_6
23607       , l_array_source_7
23608       , l_array_source_8
23609       , l_array_source_10
23610       , l_array_source_11
23611       , l_array_source_12
23612       , l_array_source_13
23613       , l_array_source_14
23614       , l_array_source_15
23615       LIMIT l_rows;
23616 
23617   --
23618   IF (C_LEVEL_EVENT >= g_log_level) THEN
23619             trace
23620                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
23621                ,p_level    => C_LEVEL_EVENT
23622                ,p_module   => l_log_module);
23623   END IF;
23624   --
23625   EXIT WHEN l_array_entity_id.count = 0;
23626 
23627   XLA_AE_LINES_PKG.g_rec_lines := null;
23628 
23629 --
23630 -- Bug 4458708
23631 --
23632 XLA_AE_LINES_PKG.g_LineNumber := 0;
23633 --
23634 --
23635 
23636 FOR Idx IN 1..l_array_event_id.count LOOP
23637    --
23638    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
23639    --
23640    l_event_id := l_array_event_id(idx);  -- 5648433
23641 
23642    --
23643    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
23644    --
23645 
23646    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
23647              (g_array_event(l_event_id).array_value_num('header_index'))
23648          ,'N'
23649          ) <> 'Y'
23650    THEN
23651       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23652          trace
23653             (p_msg      => 'Trancaction revesal option is not Y '
23654             ,p_level    => C_LEVEL_STATEMENT
23655             ,p_module   => l_log_module);
23656       END IF;
23657 
23658 --
23659 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
23660 --
23661 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
23662 --
23663 -- set event info as cache for other routines to refer event attributes
23664 --
23665 
23666 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
23667    l_previous_event_id := l_event_id;
23668 
23669    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
23670       (p_application_id           => p_application_id
23671       ,p_primary_ledger_id        => p_primary_ledger_id
23672       ,p_base_ledger_id           => p_base_ledger_id
23673       ,p_target_ledger_id         => p_target_ledger_id
23674       ,p_entity_id                => l_array_entity_id(Idx)
23675       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
23676       ,p_entity_code              => l_array_entity_code(Idx)
23677       ,p_transaction_num          => l_array_transaction_num(Idx)
23678       ,p_event_id                 => l_array_event_id(Idx)
23679       ,p_event_class_code         => l_array_class_code(Idx)
23680       ,p_event_type_code          => l_array_event_type(Idx)
23681       ,p_event_number             => l_array_event_number(Idx)
23682       ,p_event_date               => l_array_event_date(Idx)
23683       ,p_transaction_date         => l_array_transaction_date(Idx)
23684       ,p_reference_num_1          => l_array_reference_num_1(Idx)
23685       ,p_reference_num_2          => l_array_reference_num_2(Idx)
23686       ,p_reference_num_3          => l_array_reference_num_3(Idx)
23687       ,p_reference_num_4          => l_array_reference_num_4(Idx)
23688       ,p_reference_char_1         => l_array_reference_char_1(Idx)
23689       ,p_reference_char_2         => l_array_reference_char_2(Idx)
23690       ,p_reference_char_3         => l_array_reference_char_3(Idx)
23691       ,p_reference_char_4         => l_array_reference_char_4(Idx)
23692       ,p_reference_date_1         => l_array_reference_date_1(Idx)
23693       ,p_reference_date_2         => l_array_reference_date_2(Idx)
23694       ,p_reference_date_3         => l_array_reference_date_3(Idx)
23695       ,p_reference_date_4         => l_array_reference_date_4(Idx)
23696       ,p_event_created_by         => l_array_event_created_by(Idx)
23697       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
23698        --
23699 END IF;
23700 
23701 
23702 
23703 --
23704 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
23705 
23706 l_acct_reversal_source := SUBSTR(NULL, 1,30);
23707 
23708 IF l_continue_with_lines THEN
23709    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
23710       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
23711 
23712       xla_accounting_err_pkg.build_message
23713          (p_appli_s_name            => 'XLA'
23714          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
23715          ,p_token_1                 => 'LINE_NUMBER'
23716          ,p_value_1                 => l_array_extract_line_num(Idx)
23717          ,p_token_2                 => 'PRODUCT_NAME'
23718          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
23719          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
23720          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
23721          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
23722 
23723    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
23724       --
23725       -- following sets the accounting attributes needed to reverse
23726       -- accounting for a distributeion
23727       --
23728 
23729       --
23730       -- 5217187
23731       --
23732       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
23733       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
23734                                        g_array_event(l_event_id).array_value_num('header_index'));
23735       --
23736       --
23737 
23738       -- No reversal code generated
23739 
23740       xla_ae_lines_pkg.SetAcctReversalAttrs
23741          (p_event_id             => l_event_id
23742          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
23743          ,p_calculate_acctd_flag => l_calculate_acctd_flag
23744          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
23745    END IF;
23746 
23747    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
23748        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
23749 
23750 --
23751 AcctLineType_25 (
23752  p_application_id  => p_application_id
23753  ,p_event_id     => l_event_id
23754  ,p_calculate_acctd_flag => l_calculate_acctd_flag
23755  ,p_calculate_g_l_flag => l_calculate_g_l_flag
23756  ,p_actual_flag => l_actual_flag
23757  ,p_balance_type_code => l_balance_type_code
23758  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
23759  
23760  , p_source_6 => l_array_source_6(Idx)
23761  , p_source_7 => l_array_source_7(Idx)
23762  , p_source_8 => l_array_source_8(Idx)
23763  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
23764  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
23765  , p_source_10 => l_array_source_10(Idx)
23766  , p_source_11 => l_array_source_11(Idx)
23767  , p_source_12 => l_array_source_12(Idx)
23768  , p_source_13 => l_array_source_13(Idx)
23769  , p_source_14 => l_array_source_14(Idx)
23770  , p_source_15 => l_array_source_15(Idx)
23771  );
23772 If(l_balance_type_code = 'A') THEN
23773   l_actual_gain_loss_ref := l_gain_or_loss_ref;
23774 END IF;
23775 
23776 --
23777 
23778       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
23779       -- or secondary ledger that has different currency with primary
23780       -- or alc that is calculated by sla
23781       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
23782             (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'))
23783 
23784 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
23785 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
23786           AND (l_actual_flag = 'A')) THEN
23787         XLA_AE_LINES_PKG.CreateGainOrLossLines(
23788           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
23789          ,p_application_id   => p_application_id
23790          ,p_amb_context_code => 'DEFAULT'
23791          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
23792          ,p_event_class_code => C_EVENT_CLASS_CODE
23793          ,p_event_type_code  => C_EVENT_TYPE_CODE
23794          
23795          ,p_gain_ccid        => -1
23796          ,p_loss_ccid        => -1
23797 
23798          ,p_actual_flag      => l_actual_flag
23799          ,p_enc_flag         => null
23800          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
23801          ,p_enc_g_l_ref      => null
23802          );
23803       END IF;
23804    END IF;
23805 END IF;
23806 
23807    ELSE
23808       --
23809       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
23810       --
23811       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23812          trace
23813             (p_msg      => 'Trancaction revesal option is Y'
23814             ,p_level    => C_LEVEL_STATEMENT
23815             ,p_module   => l_log_module);
23816       END IF;
23817    END IF;
23818 
23819 END LOOP;
23820 l_result := XLA_AE_LINES_PKG.InsertLines ;
23821 end loop;
23822 close line_cur;
23823 
23824 
23825 --
23826 -- insert headers into xla_ae_headers_gt table
23827 --
23828 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
23829 
23830 -- insert into errors table here.
23831 
23832 END LOOP;
23833 
23834 --
23835 -- 4865292
23836 --
23837 -- Compare g_hdr_extract_count with event count in
23838 -- CreateHeadersAndLines.
23839 --
23840 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
23841 
23842 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23843    trace (p_msg     => '# rows extracted from header extract objects '
23844                     || ' (running total): '
23845                     || g_hdr_extract_count
23846          ,p_level   => C_LEVEL_STATEMENT
23847          ,p_module  => l_log_module);
23848 END IF;
23849 
23850 CLOSE header_cur;
23851 --
23852 
23853 --
23854 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23855    trace
23856       (p_msg      => 'END of EventType_34'
23857       ,p_level    => C_LEVEL_PROCEDURE
23858       ,p_module   => l_log_module);
23859 END IF;
23860 --
23861 RETURN l_result;
23862 EXCEPTION
23863 WHEN xla_exceptions_pkg.application_exception THEN
23864    
23865 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
23866 
23867    
23868 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
23869 
23870    RAISE;
23871 
23872 WHEN NO_DATA_FOUND THEN
23873 
23874 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
23875 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
23876 
23877 FOR header_record IN header_cur
23878 LOOP
23879     l_array_header_events(header_record.event_id) := header_record.event_id;
23880 END LOOP;
23881 
23882 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
23883 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
23884 
23885 fnd_file.put_line(fnd_file.LOG, '                    ');
23886 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
23887 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
23888 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
23889 
23890 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
23891 LOOP
23892 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
23893 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
23894         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
23895 	END IF;
23896 END LOOP;
23897 
23898 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
23899 fnd_file.put_line(fnd_file.LOG, '                    ');
23900 
23901 
23902 xla_exceptions_pkg.raise_message
23903       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_34');
23904 
23905 
23906 WHEN OTHERS THEN
23907    xla_exceptions_pkg.raise_message
23908       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_34');
23909 END EventType_34;
23910 --
23911 
23912 ---------------------------------------
23913 --
23914 -- PRIVATE PROCEDURE
23915 --         insert_sources_35
23916 --
23917 ----------------------------------------
23918 --
23919 PROCEDURE insert_sources_35(
23920                                 p_target_ledger_id       IN NUMBER
23921                               , p_language               IN VARCHAR2
23922                               , p_sla_ledger_id          IN NUMBER
23923                               , p_pad_start_date         IN DATE
23924                               , p_pad_end_date           IN DATE
23925                          )
23926 IS
23927 
23928 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_ISSUE_NO_TP';
23929 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
23930 p_apps_owner                   VARCHAR2(30);
23931 l_log_module                   VARCHAR2(240);
23932 BEGIN
23933 IF g_log_enabled THEN
23934       l_log_module := C_DEFAULT_MODULE||'.insert_sources_35';
23935 END IF;
23936 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23937 
23938       trace
23939          (p_msg      => 'BEGIN of insert_sources_35'
23940          ,p_level    => C_LEVEL_PROCEDURE
23941          ,p_module   => l_log_module);
23942 
23943 END IF;
23944 
23945 -- select APPS owner
23946 SELECT oracle_username
23947   INTO p_apps_owner
23948   FROM fnd_oracle_userid
23949  WHERE read_only_flag = 'U'
23950 ;
23951 
23952 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
23953       trace
23954          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
23955                         ' - p_language = '||p_language||
23956                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
23957                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
23958                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
23959                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
23960          ,p_level    => C_LEVEL_STATEMENT
23961          ,p_module   => l_log_module);
23962 END IF;
23963 
23964 
23965 --
23966 INSERT INTO xla_diag_sources --hdr1
23967 (
23968         event_id
23969       , ledger_id
23970       , sla_ledger_id
23971       , description_language
23972       , object_name
23973       , object_type_code
23974       , line_number
23975       , source_application_id
23976       , source_type_code
23977       , source_code
23978       , source_value
23979       , source_meaning
23980       , created_by
23981       , creation_date
23982       , last_update_date
23983       , last_updated_by
23984       , last_update_login
23985       , program_update_date
23986       , program_application_id
23987       , program_id
23988       , request_id
23989 )
23990 SELECT
23991         event_id
23992       , p_target_ledger_id
23993       , p_sla_ledger_id
23994       , p_language
23995       , object_name
23996       , object_type_code
23997       , line_number
23998       , source_application_id
23999       , source_type_code
24000       , source_code
24001       , SUBSTR(source_value ,1,1996)
24002       , SUBSTR(source_meaning,1,200)
24003       , xla_environment_pkg.g_Usr_Id
24004       , TRUNC(SYSDATE)
24005       , TRUNC(SYSDATE)
24006       , xla_environment_pkg.g_Usr_Id
24007       , xla_environment_pkg.g_Login_Id
24008       , TRUNC(SYSDATE)
24009       , xla_environment_pkg.g_Prog_Appl_Id
24010       , xla_environment_pkg.g_Prog_Id
24011       , xla_environment_pkg.g_Req_Id
24012   FROM (
24013        SELECT xet.event_id                  event_id
24014             , 0                             line_number
24015             , CASE r
24016                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
24017                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
24018                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
24019                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
24020                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
24021                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
24022                 WHEN 7 THEN 'CST_XLA_INV_HEADERS_V' 
24023                 
24024                ELSE null
24025               END                           object_name
24026             , CASE r
24027                 WHEN 1 THEN 'HEADER' 
24028                 WHEN 2 THEN 'HEADER' 
24029                 WHEN 3 THEN 'HEADER' 
24030                 WHEN 4 THEN 'HEADER' 
24031                 WHEN 5 THEN 'HEADER' 
24032                 WHEN 6 THEN 'HEADER' 
24033                 WHEN 7 THEN 'HEADER' 
24034                 
24035                 ELSE null
24036               END                           object_type_code
24037             , CASE r
24038                 WHEN 1 THEN '707' 
24039                 WHEN 2 THEN '707' 
24040                 WHEN 3 THEN '707' 
24041                 WHEN 4 THEN '707' 
24042                 WHEN 5 THEN '707' 
24043                 WHEN 6 THEN '707' 
24044                 WHEN 7 THEN '707' 
24045                 
24046                 ELSE null
24047               END                           source_application_id
24048             , 'S'             source_type_code
24049             , CASE r
24050                 WHEN 1 THEN 'TRANSACTION_ID' 
24051                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
24052                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
24053                 WHEN 4 THEN 'TRANSACTION_UOM' 
24054                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
24055                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
24056                 WHEN 7 THEN 'TRANSFER_TO_GL_INDICATOR' 
24057                 
24058                 ELSE null
24059               END                           source_code
24060             , CASE r
24061                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
24062                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
24063                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
24064                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
24065                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
24066                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
24067                 WHEN 7 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
24068                 
24069                 ELSE null
24070               END                           source_value
24071             , CASE r
24072                 WHEN 6 THEN fvl9.meaning
24073                 WHEN 7 THEN fvl42.meaning
24074                 
24075                 ELSE null
24076               END               source_meaning
24077         FROM xla_events_gt     xet  
24078       , CST_XLA_INV_HEADERS_V  h1
24079       , CST_XLA_INV_REF_V  h3
24080       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
24081       , CST_XLA_INV_TXN_TYPES_REF_V  h5
24082   , fnd_lookup_values    fvl9
24083   , fnd_lookup_values    fvl42
24084             ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
24085        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
24086          AND xet.event_type_code = C_EVENT_TYPE_CODE
24087             AND h1.event_id = xet.event_id
24088  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id   AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
24089   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
24090   AND fvl9.view_application_id(+) = 700
24091   AND fvl9.language(+)            = USERENV('LANG')
24092      AND fvl42.lookup_type(+)         = 'YES_NO'
24093   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
24094   AND fvl42.view_application_id(+) = 0
24095   AND fvl42.language(+)            = USERENV('LANG')
24096   
24097 )
24098 ;
24099 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24100 
24101       trace
24102          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
24103          ,p_level    => C_LEVEL_STATEMENT
24104          ,p_module   => l_log_module);
24105 
24106 END IF;
24107 --
24108 
24109 
24110 
24111 --
24112 INSERT INTO xla_diag_sources --line1
24113 (
24114         event_id
24115       , ledger_id
24116       , sla_ledger_id
24117       , description_language
24118       , object_name
24119       , object_type_code
24120       , line_number
24121       , source_application_id
24122       , source_type_code
24123       , source_code
24124       , source_value
24125       , source_meaning
24126       , created_by
24127       , creation_date
24128       , last_update_date
24129       , last_updated_by
24130       , last_update_login
24131       , program_update_date
24132       , program_application_id
24133       , program_id
24134       , request_id
24135 )
24136 SELECT  event_id
24137       , p_target_ledger_id
24138       , p_sla_ledger_id
24139       , p_language
24140       , object_name
24141       , object_type_code
24142       , line_number
24143       , source_application_id
24144       , source_type_code
24145       , source_code
24146       , SUBSTR(source_value,1,1996)
24147       , SUBSTR(source_meaning,1,200)
24148       , xla_environment_pkg.g_Usr_Id
24149       , TRUNC(SYSDATE)
24150       , TRUNC(SYSDATE)
24151       , xla_environment_pkg.g_Usr_Id
24152       , xla_environment_pkg.g_Login_Id
24153       , TRUNC(SYSDATE)
24154       , xla_environment_pkg.g_Prog_Appl_Id
24155       , xla_environment_pkg.g_Prog_Id
24156       , xla_environment_pkg.g_Req_Id
24157   FROM (
24158        SELECT xet.event_id                  event_id
24159             , l2.line_number                 line_number
24160             , CASE r
24161                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
24162                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
24163                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
24164                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
24165                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
24166                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
24167                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
24168                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
24169                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
24170                 
24171                ELSE null
24172               END                           object_name
24173             , CASE r
24174                 WHEN 1 THEN 'LINE' 
24175                 WHEN 2 THEN 'LINE' 
24176                 WHEN 3 THEN 'LINE' 
24177                 WHEN 4 THEN 'LINE' 
24178                 WHEN 5 THEN 'LINE' 
24179                 WHEN 6 THEN 'LINE' 
24180                 WHEN 7 THEN 'LINE' 
24181                 WHEN 8 THEN 'LINE' 
24182                 WHEN 9 THEN 'LINE' 
24183                 
24184                 ELSE null
24185               END                           object_type_code
24186             , CASE r
24187                 WHEN 1 THEN '707' 
24188                 WHEN 2 THEN '707' 
24189                 WHEN 3 THEN '707' 
24190                 WHEN 4 THEN '707' 
24191                 WHEN 5 THEN '707' 
24192                 WHEN 6 THEN '707' 
24193                 WHEN 7 THEN '707' 
24194                 WHEN 8 THEN '707' 
24195                 WHEN 9 THEN '707' 
24196                 
24197                 ELSE null
24198               END                           source_application_id
24199             , 'S'             source_type_code
24200             , CASE r
24201                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
24202                 WHEN 2 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
24203                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
24204                 WHEN 4 THEN 'ENTERED_AMOUNT' 
24205                 WHEN 5 THEN 'CURRENCY_CODE' 
24206                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
24207                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
24208                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
24209                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
24210                 
24211                 ELSE null
24212               END                           source_code
24213             , CASE r
24214                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
24215                 WHEN 2 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
24216                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
24217                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
24218                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CODE)
24219                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
24220                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
24221                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
24222                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
24223                 
24224                 ELSE null
24225               END                           source_value
24226             , null              source_meaning
24227          FROM  xla_events_gt     xet  
24228         , CST_XLA_INV_LINES_V  l2
24229             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
24230         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
24231           AND xet.event_type_code = C_EVENT_TYPE_CODE
24232             AND l2.event_id          = xet.event_id
24233 
24234 )
24235 ;
24236 --
24237 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24238 
24239       trace
24240          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
24241          ,p_level    => C_LEVEL_STATEMENT
24242          ,p_module   => l_log_module);
24243 
24244 END IF;
24245 
24246 
24247 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24248       trace
24249          (p_msg      => 'END of insert_sources_35'
24250          ,p_level    => C_LEVEL_PROCEDURE
24251          ,p_module   => l_log_module);
24252 END IF;
24253 EXCEPTION
24254   WHEN xla_exceptions_pkg.application_exception THEN
24255       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
24256             trace
24257                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
24258                ,p_level    => C_LEVEL_EXCEPTION
24259                ,p_module   => l_log_module);
24260       END IF;
24261       RAISE;
24262   WHEN OTHERS THEN
24263       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
24264             trace
24265                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
24266                ,p_level    => C_LEVEL_EXCEPTION
24267                ,p_module   => l_log_module);
24268        END IF;
24269        xla_exceptions_pkg.raise_message
24270            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_35');
24271 END insert_sources_35;
24272 --
24273 
24274 ---------------------------------------
24275 --
24276 -- PRIVATE FUNCTION
24277 --         EventType_35
24278 --
24279 ----------------------------------------
24280 --
24281 FUNCTION EventType_35
24282        (p_application_id         IN NUMBER
24283        ,p_base_ledger_id         IN NUMBER
24284        ,p_target_ledger_id       IN NUMBER
24285        ,p_language               IN VARCHAR2
24286        ,p_currency_code          IN VARCHAR2
24287        ,p_sla_ledger_id          IN NUMBER
24288        ,p_pad_start_date         IN DATE
24289        ,p_pad_end_date           IN DATE
24290        ,p_primary_ledger_id      IN NUMBER)
24291 RETURN BOOLEAN IS
24292 --
24293 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_ISSUE_NO_TP';
24294 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
24295 
24296 l_calculate_acctd_flag   VARCHAR2(1) :='N';
24297 l_calculate_g_l_flag     VARCHAR2(1) :='N';
24298 --
24299 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
24300 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
24301 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
24302 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
24303 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
24304 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
24305 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
24306 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
24307 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
24308 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
24309 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
24310 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
24311 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
24312 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
24313 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
24314 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
24315 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
24316 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
24317 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
24318 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
24319 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
24320 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
24321 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
24322 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
24323 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
24324 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
24325 
24326 l_event_id                             NUMBER;
24327 l_previous_event_id                    NUMBER;
24328 l_first_event_id                       NUMBER;
24329 l_last_event_id                        NUMBER;
24330 
24331 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
24332 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
24333 --
24334 --
24335 l_result                    BOOLEAN := TRUE;
24336 l_rows                      NUMBER  := 1000;
24337 l_event_type_name           VARCHAR2(80) := 'Internal Order Issue to Expense, no Transfer Pricing';
24338 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
24339 l_description               VARCHAR2(4000);
24340 l_transaction_reversal      NUMBER;
24341 l_ae_header_id              NUMBER;
24342 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
24343 l_log_module                VARCHAR2(240);
24344 --
24345 l_acct_reversal_source      VARCHAR2(30);
24346 l_trx_reversal_source       VARCHAR2(30);
24347 
24348 l_continue_with_lines       BOOLEAN := TRUE;
24349 --
24350 l_acc_rev_gl_date_source    DATE;                      -- 4262811
24351 --
24352 type t_array_event_id is table of number index by binary_integer;
24353 
24354 l_rec_array_event                    t_rec_array_event;
24355 l_null_rec_array_event               t_rec_array_event;
24356 l_array_ae_header_id                 xla_number_array_type;
24357 l_actual_flag                        VARCHAR2(1) := NULL;
24358 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
24359 l_balance_type_code                  VARCHAR2(1) :=NULL;
24360 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
24361 
24362 --
24363 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
24364 --
24365 
24366 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
24367 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
24368 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
24369 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
24370 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
24371 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
24372 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
24373 
24374 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
24375 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
24376 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
24377 TYPE t_array_source_10 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
24378 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
24379 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
24380 TYPE t_array_source_13 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
24381 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
24382 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
24383 
24384 l_array_source_1              t_array_source_1;
24385 l_array_source_2              t_array_source_2;
24386 l_array_source_3              t_array_source_3;
24387 l_array_source_4              t_array_source_4;
24388 l_array_source_5              t_array_source_5;
24389 l_array_source_9              t_array_source_9;
24390 l_array_source_9_meaning      t_array_lookup_meaning;
24391 l_array_source_42              t_array_source_42;
24392 l_array_source_42_meaning      t_array_lookup_meaning;
24393 
24394 l_array_source_6      t_array_source_6;
24395 l_array_source_7      t_array_source_7;
24396 l_array_source_8      t_array_source_8;
24397 l_array_source_10      t_array_source_10;
24398 l_array_source_11      t_array_source_11;
24399 l_array_source_12      t_array_source_12;
24400 l_array_source_13      t_array_source_13;
24401 l_array_source_14      t_array_source_14;
24402 l_array_source_15      t_array_source_15;
24403 
24404 --
24405 CURSOR header_cur
24406 IS
24407 SELECT /*+ leading(xet) cardinality(xet,1) */
24408 -- Event Type Code: INT_ORDER_ISSUE_NO_TP
24409 -- Event Class Code: INT_ORDER_TO_EXP
24410     xet.entity_id
24411   , xet.legal_entity_id
24412   , xet.entity_code
24413   , xet.transaction_number
24414   , xet.event_id
24415   , xet.event_class_code
24416   , xet.event_type_code
24417   , xet.event_number
24418   , xet.event_date
24419   , xet.transaction_date
24420   , xet.reference_num_1
24421   , xet.reference_num_2
24422   , xet.reference_num_3
24423   , xet.reference_num_4
24424   , xet.reference_char_1
24425   , xet.reference_char_2
24426   , xet.reference_char_3
24427   , xet.reference_char_4
24428   , xet.reference_date_1
24429   , xet.reference_date_2
24430   , xet.reference_date_3
24431   , xet.reference_date_4
24432   , xet.event_created_by
24433   , xet.budgetary_control_flag 
24434   , h1.TRANSACTION_ID    source_1
24435   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
24436   , h3.TRANSACTION_QUANTITY    source_3
24437   , h3.TRANSACTION_UOM    source_4
24438   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
24439   , h1.DISTRIBUTION_TYPE    source_9
24440   , fvl9.meaning   source_9_meaning
24441   , h1.TRANSFER_TO_GL_INDICATOR    source_42
24442   , fvl42.meaning   source_42_meaning
24443   FROM xla_events_gt     xet 
24444   , CST_XLA_INV_HEADERS_V  h1
24445   , CST_XLA_INV_REF_V  h3
24446   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
24447   , CST_XLA_INV_TXN_TYPES_REF_V  h5
24448   , fnd_lookup_values    fvl9
24449   , fnd_lookup_values    fvl42
24450  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
24451    and xet.event_type_code = C_EVENT_TYPE_CODE
24452    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
24453  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID   AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
24454   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
24455   AND fvl9.view_application_id(+) = 700
24456   AND fvl9.language(+)            = USERENV('LANG')
24457      AND fvl42.lookup_type(+)         = 'YES_NO'
24458   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
24459   AND fvl42.view_application_id(+) = 0
24460   AND fvl42.language(+)            = USERENV('LANG')
24461   
24462  ORDER BY event_id
24463 ;
24464 
24465 
24466 --
24467 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
24468 IS
24469 SELECT /*+ leading(xet) cardinality(xet,1) */
24470 -- Event Type Code: INT_ORDER_ISSUE_NO_TP
24471 -- Event Class Code: INT_ORDER_TO_EXP
24472     xet.entity_id
24473    ,xet.legal_entity_id
24474    ,xet.entity_code
24475    ,xet.transaction_number
24476    ,xet.event_id
24477    ,xet.event_class_code
24478    ,xet.event_type_code
24479    ,xet.event_number
24480    ,xet.event_date
24481    ,xet.transaction_date
24482    ,xet.reference_num_1
24483    ,xet.reference_num_2
24484    ,xet.reference_num_3
24485    ,xet.reference_num_4
24486    ,xet.reference_char_1
24487    ,xet.reference_char_2
24488    ,xet.reference_char_3
24489    ,xet.reference_char_4
24490    ,xet.reference_date_1
24491    ,xet.reference_date_2
24492    ,xet.reference_date_3
24493    ,xet.reference_date_4
24494    ,xet.event_created_by
24495    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
24496   , l2.CODE_COMBINATION_ID    source_6
24497   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
24498   , l2.DISTRIBUTION_IDENTIFIER    source_8
24499   , l2.ENTERED_AMOUNT    source_10
24500   , l2.CURRENCY_CODE    source_11
24501   , l2.CURRENCY_CONVERSION_DATE    source_12
24502   , l2.CURRENCY_CONVERSION_RATE    source_13
24503   , l2.CURRENCY_CONVERSION_TYPE    source_14
24504   , l2.ACCOUNTED_AMOUNT    source_15
24505   FROM xla_events_gt     xet 
24506   , CST_XLA_INV_LINES_V  l2
24507  WHERE xet.event_id between x_first_event_id and x_last_event_id
24508    and xet.event_date between p_pad_start_date and p_pad_end_date
24509    and xet.event_type_code = C_EVENT_TYPE_CODE
24510    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
24511 ;
24512 
24513 --
24514 BEGIN
24515 IF g_log_enabled THEN
24516    l_log_module := C_DEFAULT_MODULE||'.EventType_35';
24517 END IF;
24518 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24519    trace
24520       (p_msg      => 'BEGIN of EventType_35'
24521       ,p_level    => C_LEVEL_PROCEDURE
24522       ,p_module   => l_log_module);
24523 END IF;
24524 
24525 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24526    trace
24527       (p_msg      => 'p_application_id = '||p_application_id||
24528                      ' - p_base_ledger_id = '||p_base_ledger_id||
24529                      ' - p_target_ledger_id  = '||p_target_ledger_id||
24530                      ' - p_language = '||p_language||
24531                      ' - p_currency_code = '||p_currency_code||
24532                      ' - p_sla_ledger_id = '||p_sla_ledger_id
24533       ,p_level    => C_LEVEL_STATEMENT
24534       ,p_module   => l_log_module);
24535 END IF;
24536 --
24537 -- initialze arrays
24538 --
24539 g_array_event.DELETE;
24540 l_rec_array_event := l_null_rec_array_event;
24541 --
24542 --------------------------------------
24543 -- 4262811 Initialze MPA Line Number
24544 --------------------------------------
24545 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
24546 
24547 --
24548 
24549 --
24550 OPEN header_cur;
24551 --
24552 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24553    trace
24554    (p_msg      => 'SQL - FETCH header_cur'
24555    ,p_level    => C_LEVEL_STATEMENT
24556    ,p_module   => l_log_module);
24557 END IF;
24558 --
24559 LOOP
24560 FETCH header_cur BULK COLLECT INTO
24561         l_array_entity_id
24562       , l_array_legal_entity_id
24563       , l_array_entity_code
24564       , l_array_transaction_num
24565       , l_array_event_id
24566       , l_array_class_code
24567       , l_array_event_type
24568       , l_array_event_number
24569       , l_array_event_date
24570       , l_array_transaction_date
24571       , l_array_reference_num_1
24572       , l_array_reference_num_2
24573       , l_array_reference_num_3
24574       , l_array_reference_num_4
24575       , l_array_reference_char_1
24576       , l_array_reference_char_2
24577       , l_array_reference_char_3
24578       , l_array_reference_char_4
24579       , l_array_reference_date_1
24580       , l_array_reference_date_2
24581       , l_array_reference_date_3
24582       , l_array_reference_date_4
24583       , l_array_event_created_by
24584       , l_array_budgetary_control_flag 
24585       , l_array_source_1
24586       , l_array_source_2
24587       , l_array_source_3
24588       , l_array_source_4
24589       , l_array_source_5
24590       , l_array_source_9
24591       , l_array_source_9_meaning
24592       , l_array_source_42
24593       , l_array_source_42_meaning
24594       LIMIT l_rows;
24595 --
24596 IF (C_LEVEL_EVENT >= g_log_level) THEN
24597    trace
24598    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
24599    ,p_level    => C_LEVEL_EVENT
24600    ,p_module   => l_log_module);
24601 END IF;
24602 --
24603 EXIT WHEN l_array_entity_id.COUNT = 0;
24604 
24605 -- initialize arrays
24606 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
24607 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
24608 
24609 --
24610 -- Bug 4458708
24611 --
24612 XLA_AE_LINES_PKG.g_LineNumber := 0;
24613 
24614 
24615 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
24616 g_last_hdr_idx := l_array_event_id.LAST;
24617 --
24618 -- loop for the headers. Each iteration is for each header extract row
24619 -- fetched in header cursor
24620 --
24621 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
24622 
24623 --
24624 -- set event info as cache for other routines to refer event attributes
24625 --
24626 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
24627    (p_application_id           => p_application_id
24628    ,p_primary_ledger_id        => p_primary_ledger_id
24629    ,p_base_ledger_id           => p_base_ledger_id
24630    ,p_target_ledger_id         => p_target_ledger_id
24631    ,p_entity_id                => l_array_entity_id(hdr_idx)
24632    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
24633    ,p_entity_code              => l_array_entity_code(hdr_idx)
24634    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
24635    ,p_event_id                 => l_array_event_id(hdr_idx)
24636    ,p_event_class_code         => l_array_class_code(hdr_idx)
24637    ,p_event_type_code          => l_array_event_type(hdr_idx)
24638    ,p_event_number             => l_array_event_number(hdr_idx)
24639    ,p_event_date               => l_array_event_date(hdr_idx)
24640    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
24641    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
24642    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
24643    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
24644    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
24645    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
24646    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
24647    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
24648    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
24649    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
24650    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
24651    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
24652    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
24653    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
24654    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
24655 
24656 --
24657 -- set the status of entry to C_VALID (0)
24658 --
24659 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
24660 
24661 --
24662 -- initialize a row for ae header
24663 --
24664 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
24665 
24666 l_event_id := l_array_event_id(hdr_idx);
24667 
24668 --
24669 -- storing the hdr_idx for event. May be used by line cursor.
24670 --
24671 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
24672 
24673 --
24674 -- store sources from header extract. This can be improved to
24675 -- store only those sources from header extract that may be used in lines
24676 --
24677 
24678 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
24679 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
24680 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
24681 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
24682 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
24683 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
24684 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
24685 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
24686 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
24687 
24688 --
24689 -- initilaize the status of ae headers for diffrent balance types
24690 -- the status is initialised to C_NOT_CREATED (2)
24691 --
24692 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
24693 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
24694 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
24695 
24696 --
24697 -- call api to validate and store accounting attributes for header
24698 --
24699 
24700 ------------------------------------------------------------
24701 -- Accrual Reversal : to get date for Standard Source (NONE)
24702 ------------------------------------------------------------
24703 l_acc_rev_gl_date_source := NULL;
24704 
24705      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
24706       l_rec_acct_attrs.array_date_value(1) := 
24707 xla_ae_sources_pkg.GetSystemSourceDate(
24708    p_source_code           => 'XLA_REFERENCE_DATE_1'
24709  , p_source_type_code      => 'Y'
24710  , p_source_application_id =>  602
24711 );
24712      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
24713       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_42');
24714 
24715 
24716 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
24717 
24718 XLA_AE_HEADER_PKG.SetJeCategoryName;
24719 
24720 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
24721 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
24722 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
24723 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
24724 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
24725 
24726 
24727 --
24728 xla_ae_header_pkg.SetHdrDescription(
24729    p_description => Description_1 (
24730    p_application_id => p_application_id 
24731  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
24732  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
24733  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
24734  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
24735  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
24736    )
24737 );
24738 --
24739 
24740 -- No header level analytical criteria
24741 
24742 --
24743 --accounting attribute enhancement, bug 3612931
24744 --
24745 l_trx_reversal_source := SUBSTR(NULL, 1,30);
24746 
24747 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
24748    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
24749 
24750    xla_accounting_err_pkg.build_message
24751       (p_appli_s_name            => 'XLA'
24752       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
24753       ,p_token_1                 => 'ACCT_ATTR_NAME'
24754       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
24755       ,p_token_2                 => 'PRODUCT_NAME'
24756       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
24757       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
24758       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
24759       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
24760 
24761 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
24762    --
24763    -- following sets the accounting attributes needed to reverse
24764    -- accounting for a distributeion
24765    --
24766    xla_ae_lines_pkg.SetTrxReversalAttrs
24767       (p_event_id              => l_event_id
24768       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
24769       ,p_trx_reversal_source   => l_trx_reversal_source);
24770 
24771 END IF;
24772 
24773 
24774 ----------------------------------------------------------------
24775 -- 4262811 -  update the header statuses to invalid in need be
24776 ----------------------------------------------------------------
24777 --
24778 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
24779 
24780 
24781   -----------------------------------------------
24782   -- No accrual reversal for the event class/type
24783   -----------------------------------------------
24784 ----------------------------------------------------------------
24785 
24786 --
24787 -- this ends the header loop iteration for one bulk fetch
24788 --
24789 END LOOP;
24790 
24791 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
24792 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
24793 
24794 --
24795 -- insert dummy rows into lines gt table that were created due to
24796 -- transaction reversals
24797 --
24798 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
24799    l_result := XLA_AE_LINES_PKG.InsertLines;
24800 END IF;
24801 
24802 --
24803 -- reset the temp_line_num for each set of events fetched from header
24804 -- cursor rather than doing it for each new event in line cursor
24805 -- Bug 3939231
24806 --
24807 xla_ae_lines_pkg.g_temp_line_num := 0;
24808 
24809 
24810 
24811 --
24812 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
24813 --
24814 --
24815 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24816 
24817       trace
24818          (p_msg      => 'SQL - FETCH line_cur'
24819          ,p_level    => C_LEVEL_STATEMENT
24820          ,p_module   => l_log_module);
24821 
24822 END IF;
24823 --
24824 --
24825 LOOP
24826   --
24827   FETCH line_cur BULK COLLECT INTO
24828         l_array_entity_id
24829       , l_array_legal_entity_id
24830       , l_array_entity_code
24831       , l_array_transaction_num
24832       , l_array_event_id
24833       , l_array_class_code
24834       , l_array_event_type
24835       , l_array_event_number
24836       , l_array_event_date
24837       , l_array_transaction_date
24838       , l_array_reference_num_1
24839       , l_array_reference_num_2
24840       , l_array_reference_num_3
24841       , l_array_reference_num_4
24842       , l_array_reference_char_1
24843       , l_array_reference_char_2
24844       , l_array_reference_char_3
24845       , l_array_reference_char_4
24846       , l_array_reference_date_1
24847       , l_array_reference_date_2
24848       , l_array_reference_date_3
24849       , l_array_reference_date_4
24850       , l_array_event_created_by
24851       , l_array_budgetary_control_flag
24852       , l_array_extract_line_num 
24853       , l_array_source_6
24854       , l_array_source_7
24855       , l_array_source_8
24856       , l_array_source_10
24857       , l_array_source_11
24858       , l_array_source_12
24859       , l_array_source_13
24860       , l_array_source_14
24861       , l_array_source_15
24862       LIMIT l_rows;
24863 
24864   --
24865   IF (C_LEVEL_EVENT >= g_log_level) THEN
24866             trace
24867                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
24868                ,p_level    => C_LEVEL_EVENT
24869                ,p_module   => l_log_module);
24870   END IF;
24871   --
24872   EXIT WHEN l_array_entity_id.count = 0;
24873 
24874   XLA_AE_LINES_PKG.g_rec_lines := null;
24875 
24876 --
24877 -- Bug 4458708
24878 --
24879 XLA_AE_LINES_PKG.g_LineNumber := 0;
24880 --
24881 --
24882 
24883 FOR Idx IN 1..l_array_event_id.count LOOP
24884    --
24885    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
24886    --
24887    l_event_id := l_array_event_id(idx);  -- 5648433
24888 
24889    --
24890    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
24891    --
24892 
24893    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
24894              (g_array_event(l_event_id).array_value_num('header_index'))
24895          ,'N'
24896          ) <> 'Y'
24897    THEN
24898       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
24899          trace
24900             (p_msg      => 'Trancaction revesal option is not Y '
24901             ,p_level    => C_LEVEL_STATEMENT
24902             ,p_module   => l_log_module);
24903       END IF;
24904 
24905 --
24906 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
24907 --
24908 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
24909 --
24910 -- set event info as cache for other routines to refer event attributes
24911 --
24912 
24913 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
24914    l_previous_event_id := l_event_id;
24915 
24916    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
24917       (p_application_id           => p_application_id
24918       ,p_primary_ledger_id        => p_primary_ledger_id
24919       ,p_base_ledger_id           => p_base_ledger_id
24920       ,p_target_ledger_id         => p_target_ledger_id
24921       ,p_entity_id                => l_array_entity_id(Idx)
24922       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
24923       ,p_entity_code              => l_array_entity_code(Idx)
24924       ,p_transaction_num          => l_array_transaction_num(Idx)
24925       ,p_event_id                 => l_array_event_id(Idx)
24926       ,p_event_class_code         => l_array_class_code(Idx)
24927       ,p_event_type_code          => l_array_event_type(Idx)
24928       ,p_event_number             => l_array_event_number(Idx)
24929       ,p_event_date               => l_array_event_date(Idx)
24930       ,p_transaction_date         => l_array_transaction_date(Idx)
24931       ,p_reference_num_1          => l_array_reference_num_1(Idx)
24932       ,p_reference_num_2          => l_array_reference_num_2(Idx)
24933       ,p_reference_num_3          => l_array_reference_num_3(Idx)
24934       ,p_reference_num_4          => l_array_reference_num_4(Idx)
24935       ,p_reference_char_1         => l_array_reference_char_1(Idx)
24936       ,p_reference_char_2         => l_array_reference_char_2(Idx)
24937       ,p_reference_char_3         => l_array_reference_char_3(Idx)
24938       ,p_reference_char_4         => l_array_reference_char_4(Idx)
24939       ,p_reference_date_1         => l_array_reference_date_1(Idx)
24940       ,p_reference_date_2         => l_array_reference_date_2(Idx)
24941       ,p_reference_date_3         => l_array_reference_date_3(Idx)
24942       ,p_reference_date_4         => l_array_reference_date_4(Idx)
24943       ,p_event_created_by         => l_array_event_created_by(Idx)
24944       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
24945        --
24946 END IF;
24947 
24948 
24949 
24950 --
24951 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
24952 
24953 l_acct_reversal_source := SUBSTR(NULL, 1,30);
24954 
24955 IF l_continue_with_lines THEN
24956    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
24957       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
24958 
24959       xla_accounting_err_pkg.build_message
24960          (p_appli_s_name            => 'XLA'
24961          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
24962          ,p_token_1                 => 'LINE_NUMBER'
24963          ,p_value_1                 => l_array_extract_line_num(Idx)
24964          ,p_token_2                 => 'PRODUCT_NAME'
24965          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
24966          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
24967          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
24968          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
24969 
24970    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
24971       --
24972       -- following sets the accounting attributes needed to reverse
24973       -- accounting for a distributeion
24974       --
24975 
24976       --
24977       -- 5217187
24978       --
24979       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
24980       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
24981                                        g_array_event(l_event_id).array_value_num('header_index'));
24982       --
24983       --
24984 
24985       -- No reversal code generated
24986 
24987       xla_ae_lines_pkg.SetAcctReversalAttrs
24988          (p_event_id             => l_event_id
24989          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
24990          ,p_calculate_acctd_flag => l_calculate_acctd_flag
24991          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
24992    END IF;
24993 
24994    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
24995        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
24996 
24997 --
24998 AcctLineType_6 (
24999  p_application_id  => p_application_id
25000  ,p_event_id     => l_event_id
25001  ,p_calculate_acctd_flag => l_calculate_acctd_flag
25002  ,p_calculate_g_l_flag => l_calculate_g_l_flag
25003  ,p_actual_flag => l_actual_flag
25004  ,p_balance_type_code => l_balance_type_code
25005  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
25006  
25007  , p_source_6 => l_array_source_6(Idx)
25008  , p_source_7 => l_array_source_7(Idx)
25009  , p_source_8 => l_array_source_8(Idx)
25010  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
25011  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
25012  , p_source_10 => l_array_source_10(Idx)
25013  , p_source_11 => l_array_source_11(Idx)
25014  , p_source_12 => l_array_source_12(Idx)
25015  , p_source_13 => l_array_source_13(Idx)
25016  , p_source_14 => l_array_source_14(Idx)
25017  , p_source_15 => l_array_source_15(Idx)
25018  );
25019 If(l_balance_type_code = 'A') THEN
25020   l_actual_gain_loss_ref := l_gain_or_loss_ref;
25021 END IF;
25022 
25023 --
25024 
25025       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
25026       -- or secondary ledger that has different currency with primary
25027       -- or alc that is calculated by sla
25028       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
25029             (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'))
25030 
25031 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
25032 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
25033           AND (l_actual_flag = 'A')) THEN
25034         XLA_AE_LINES_PKG.CreateGainOrLossLines(
25035           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
25036          ,p_application_id   => p_application_id
25037          ,p_amb_context_code => 'DEFAULT'
25038          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
25039          ,p_event_class_code => C_EVENT_CLASS_CODE
25040          ,p_event_type_code  => C_EVENT_TYPE_CODE
25041          
25042          ,p_gain_ccid        => -1
25043          ,p_loss_ccid        => -1
25044 
25045          ,p_actual_flag      => l_actual_flag
25046          ,p_enc_flag         => null
25047          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
25048          ,p_enc_g_l_ref      => null
25049          );
25050       END IF;
25051    END IF;
25052 END IF;
25053 
25054    ELSE
25055       --
25056       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
25057       --
25058       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25059          trace
25060             (p_msg      => 'Trancaction revesal option is Y'
25061             ,p_level    => C_LEVEL_STATEMENT
25062             ,p_module   => l_log_module);
25063       END IF;
25064    END IF;
25065 
25066 END LOOP;
25067 l_result := XLA_AE_LINES_PKG.InsertLines ;
25068 end loop;
25069 close line_cur;
25070 
25071 
25072 --
25073 -- insert headers into xla_ae_headers_gt table
25074 --
25075 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
25076 
25077 -- insert into errors table here.
25078 
25079 END LOOP;
25080 
25081 --
25082 -- 4865292
25083 --
25084 -- Compare g_hdr_extract_count with event count in
25085 -- CreateHeadersAndLines.
25086 --
25087 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
25088 
25089 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25090    trace (p_msg     => '# rows extracted from header extract objects '
25091                     || ' (running total): '
25092                     || g_hdr_extract_count
25093          ,p_level   => C_LEVEL_STATEMENT
25094          ,p_module  => l_log_module);
25095 END IF;
25096 
25097 CLOSE header_cur;
25098 --
25099 
25100 --
25101 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25102    trace
25103       (p_msg      => 'END of EventType_35'
25104       ,p_level    => C_LEVEL_PROCEDURE
25105       ,p_module   => l_log_module);
25106 END IF;
25107 --
25108 RETURN l_result;
25109 EXCEPTION
25110 WHEN xla_exceptions_pkg.application_exception THEN
25111    
25112 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
25113 
25114    
25115 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
25116 
25117    RAISE;
25118 
25119 WHEN NO_DATA_FOUND THEN
25120 
25121 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
25122 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
25123 
25124 FOR header_record IN header_cur
25125 LOOP
25126     l_array_header_events(header_record.event_id) := header_record.event_id;
25127 END LOOP;
25128 
25129 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
25130 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
25131 
25132 fnd_file.put_line(fnd_file.LOG, '                    ');
25133 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
25134 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
25135 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
25136 
25137 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
25138 LOOP
25139 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
25140 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
25141         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
25142 	END IF;
25143 END LOOP;
25144 
25145 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
25146 fnd_file.put_line(fnd_file.LOG, '                    ');
25147 
25148 
25149 xla_exceptions_pkg.raise_message
25150       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_35');
25151 
25152 
25153 WHEN OTHERS THEN
25154    xla_exceptions_pkg.raise_message
25155       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_35');
25156 END EventType_35;
25157 --
25158 
25159 ---------------------------------------
25160 --
25161 -- PRIVATE PROCEDURE
25162 --         insert_sources_36
25163 --
25164 ----------------------------------------
25165 --
25166 PROCEDURE insert_sources_36(
25167                                 p_target_ledger_id       IN NUMBER
25168                               , p_language               IN VARCHAR2
25169                               , p_sla_ledger_id          IN NUMBER
25170                               , p_pad_start_date         IN DATE
25171                               , p_pad_end_date           IN DATE
25172                          )
25173 IS
25174 
25175 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_ISSUE_TP';
25176 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
25177 p_apps_owner                   VARCHAR2(30);
25178 l_log_module                   VARCHAR2(240);
25179 BEGIN
25180 IF g_log_enabled THEN
25181       l_log_module := C_DEFAULT_MODULE||'.insert_sources_36';
25182 END IF;
25183 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25184 
25185       trace
25186          (p_msg      => 'BEGIN of insert_sources_36'
25187          ,p_level    => C_LEVEL_PROCEDURE
25188          ,p_module   => l_log_module);
25189 
25190 END IF;
25191 
25192 -- select APPS owner
25193 SELECT oracle_username
25194   INTO p_apps_owner
25195   FROM fnd_oracle_userid
25196  WHERE read_only_flag = 'U'
25197 ;
25198 
25199 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25200       trace
25201          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
25202                         ' - p_language = '||p_language||
25203                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
25204                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
25205                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
25206                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
25207          ,p_level    => C_LEVEL_STATEMENT
25208          ,p_module   => l_log_module);
25209 END IF;
25210 
25211 
25212 --
25213 INSERT INTO xla_diag_sources --hdr1
25214 (
25215         event_id
25216       , ledger_id
25217       , sla_ledger_id
25218       , description_language
25219       , object_name
25220       , object_type_code
25221       , line_number
25222       , source_application_id
25223       , source_type_code
25224       , source_code
25225       , source_value
25226       , source_meaning
25227       , created_by
25228       , creation_date
25229       , last_update_date
25230       , last_updated_by
25231       , last_update_login
25232       , program_update_date
25233       , program_application_id
25234       , program_id
25235       , request_id
25236 )
25237 SELECT
25238         event_id
25239       , p_target_ledger_id
25240       , p_sla_ledger_id
25241       , p_language
25242       , object_name
25243       , object_type_code
25244       , line_number
25245       , source_application_id
25246       , source_type_code
25247       , source_code
25248       , SUBSTR(source_value ,1,1996)
25249       , SUBSTR(source_meaning,1,200)
25250       , xla_environment_pkg.g_Usr_Id
25251       , TRUNC(SYSDATE)
25252       , TRUNC(SYSDATE)
25253       , xla_environment_pkg.g_Usr_Id
25254       , xla_environment_pkg.g_Login_Id
25255       , TRUNC(SYSDATE)
25256       , xla_environment_pkg.g_Prog_Appl_Id
25257       , xla_environment_pkg.g_Prog_Id
25258       , xla_environment_pkg.g_Req_Id
25259   FROM (
25260        SELECT xet.event_id                  event_id
25261             , 0                             line_number
25262             , CASE r
25263                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
25264                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
25265                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
25266                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
25267                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
25268                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
25269                 WHEN 7 THEN 'CST_XLA_INV_HEADERS_V' 
25270                 
25271                ELSE null
25272               END                           object_name
25273             , CASE r
25274                 WHEN 1 THEN 'HEADER' 
25275                 WHEN 2 THEN 'HEADER' 
25276                 WHEN 3 THEN 'HEADER' 
25277                 WHEN 4 THEN 'HEADER' 
25278                 WHEN 5 THEN 'HEADER' 
25279                 WHEN 6 THEN 'HEADER' 
25280                 WHEN 7 THEN 'HEADER' 
25281                 
25282                 ELSE null
25283               END                           object_type_code
25284             , CASE r
25285                 WHEN 1 THEN '707' 
25286                 WHEN 2 THEN '707' 
25287                 WHEN 3 THEN '707' 
25288                 WHEN 4 THEN '707' 
25289                 WHEN 5 THEN '707' 
25290                 WHEN 6 THEN '707' 
25291                 WHEN 7 THEN '707' 
25292                 
25293                 ELSE null
25294               END                           source_application_id
25295             , 'S'             source_type_code
25296             , CASE r
25297                 WHEN 1 THEN 'TRANSACTION_ID' 
25298                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
25299                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
25300                 WHEN 4 THEN 'TRANSACTION_UOM' 
25301                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
25302                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
25303                 WHEN 7 THEN 'TRANSFER_TO_GL_INDICATOR' 
25304                 
25305                 ELSE null
25306               END                           source_code
25307             , CASE r
25308                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
25309                 WHEN 2 THEN TO_CHAR(h4.ITEM_CONCATENATED_SEGMENTS)
25310                 WHEN 3 THEN TO_CHAR(h3.TRANSACTION_QUANTITY)
25311                 WHEN 4 THEN TO_CHAR(h3.TRANSACTION_UOM)
25312                 WHEN 5 THEN TO_CHAR(h5.INV_TXN_TYPE_DESCRIPTION)
25313                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
25314                 WHEN 7 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
25315                 
25316                 ELSE null
25317               END                           source_value
25318             , CASE r
25319                 WHEN 6 THEN fvl9.meaning
25320                 WHEN 7 THEN fvl42.meaning
25321                 
25322                 ELSE null
25323               END               source_meaning
25324         FROM xla_events_gt     xet  
25325       , CST_XLA_INV_HEADERS_V  h1
25326       , CST_XLA_INV_REF_V  h3
25327       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
25328       , CST_XLA_INV_TXN_TYPES_REF_V  h5
25329   , fnd_lookup_values    fvl9
25330   , fnd_lookup_values    fvl42
25331             ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
25332        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
25333          AND xet.event_type_code = C_EVENT_TYPE_CODE
25334             AND h1.event_id = xet.event_id
25335  AND h3.ref_transaction_id = h1.transaction_id AND h4.inventory_item_id = h1.inventory_item_id and h4.organization_id = h1.organization_id AND h5.inv_transaction_type_id = h1.transaction_type_id   AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
25336   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
25337   AND fvl9.view_application_id(+) = 700
25338   AND fvl9.language(+)            = USERENV('LANG')
25339      AND fvl42.lookup_type(+)         = 'YES_NO'
25340   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
25341   AND fvl42.view_application_id(+) = 0
25342   AND fvl42.language(+)            = USERENV('LANG')
25343   
25344 )
25345 ;
25346 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25347 
25348       trace
25349          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
25350          ,p_level    => C_LEVEL_STATEMENT
25351          ,p_module   => l_log_module);
25352 
25353 END IF;
25354 --
25355 
25356 
25357 
25358 --
25359 INSERT INTO xla_diag_sources --line1
25360 (
25361         event_id
25362       , ledger_id
25363       , sla_ledger_id
25364       , description_language
25365       , object_name
25366       , object_type_code
25367       , line_number
25368       , source_application_id
25369       , source_type_code
25370       , source_code
25371       , source_value
25372       , source_meaning
25373       , created_by
25374       , creation_date
25375       , last_update_date
25376       , last_updated_by
25377       , last_update_login
25378       , program_update_date
25379       , program_application_id
25380       , program_id
25381       , request_id
25382 )
25383 SELECT  event_id
25384       , p_target_ledger_id
25385       , p_sla_ledger_id
25386       , p_language
25387       , object_name
25388       , object_type_code
25389       , line_number
25390       , source_application_id
25391       , source_type_code
25392       , source_code
25393       , SUBSTR(source_value,1,1996)
25394       , SUBSTR(source_meaning,1,200)
25395       , xla_environment_pkg.g_Usr_Id
25396       , TRUNC(SYSDATE)
25397       , TRUNC(SYSDATE)
25398       , xla_environment_pkg.g_Usr_Id
25399       , xla_environment_pkg.g_Login_Id
25400       , TRUNC(SYSDATE)
25401       , xla_environment_pkg.g_Prog_Appl_Id
25402       , xla_environment_pkg.g_Prog_Id
25403       , xla_environment_pkg.g_Req_Id
25404   FROM (
25405        SELECT xet.event_id                  event_id
25406             , l2.line_number                 line_number
25407             , CASE r
25408                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
25409                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
25410                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
25411                 WHEN 4 THEN 'CST_XLA_INV_LINES_V' 
25412                 WHEN 5 THEN 'CST_XLA_INV_LINES_V' 
25413                 WHEN 6 THEN 'CST_XLA_INV_LINES_V' 
25414                 WHEN 7 THEN 'CST_XLA_INV_LINES_V' 
25415                 WHEN 8 THEN 'CST_XLA_INV_LINES_V' 
25416                 WHEN 9 THEN 'CST_XLA_INV_LINES_V' 
25417                 
25418                ELSE null
25419               END                           object_name
25420             , CASE r
25421                 WHEN 1 THEN 'LINE' 
25422                 WHEN 2 THEN 'LINE' 
25423                 WHEN 3 THEN 'LINE' 
25424                 WHEN 4 THEN 'LINE' 
25425                 WHEN 5 THEN 'LINE' 
25426                 WHEN 6 THEN 'LINE' 
25427                 WHEN 7 THEN 'LINE' 
25428                 WHEN 8 THEN 'LINE' 
25429                 WHEN 9 THEN 'LINE' 
25430                 
25431                 ELSE null
25432               END                           object_type_code
25433             , CASE r
25434                 WHEN 1 THEN '707' 
25435                 WHEN 2 THEN '707' 
25436                 WHEN 3 THEN '707' 
25437                 WHEN 4 THEN '707' 
25438                 WHEN 5 THEN '707' 
25439                 WHEN 6 THEN '707' 
25440                 WHEN 7 THEN '707' 
25441                 WHEN 8 THEN '707' 
25442                 WHEN 9 THEN '707' 
25443                 
25444                 ELSE null
25445               END                           source_application_id
25446             , 'S'             source_type_code
25447             , CASE r
25448                 WHEN 1 THEN 'CODE_COMBINATION_ID' 
25449                 WHEN 2 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
25450                 WHEN 3 THEN 'DISTRIBUTION_IDENTIFIER' 
25451                 WHEN 4 THEN 'ENTERED_AMOUNT' 
25452                 WHEN 5 THEN 'CURRENCY_CODE' 
25453                 WHEN 6 THEN 'CURRENCY_CONVERSION_DATE' 
25454                 WHEN 7 THEN 'CURRENCY_CONVERSION_RATE' 
25455                 WHEN 8 THEN 'CURRENCY_CONVERSION_TYPE' 
25456                 WHEN 9 THEN 'ACCOUNTED_AMOUNT' 
25457                 
25458                 ELSE null
25459               END                           source_code
25460             , CASE r
25461                 WHEN 1 THEN TO_CHAR(l2.CODE_COMBINATION_ID)
25462                 WHEN 2 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
25463                 WHEN 3 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
25464                 WHEN 4 THEN TO_CHAR(l2.ENTERED_AMOUNT)
25465                 WHEN 5 THEN TO_CHAR(l2.CURRENCY_CODE)
25466                 WHEN 6 THEN TO_CHAR(l2.CURRENCY_CONVERSION_DATE)
25467                 WHEN 7 THEN TO_CHAR(l2.CURRENCY_CONVERSION_RATE)
25468                 WHEN 8 THEN TO_CHAR(l2.CURRENCY_CONVERSION_TYPE)
25469                 WHEN 9 THEN TO_CHAR(l2.ACCOUNTED_AMOUNT)
25470                 
25471                 ELSE null
25472               END                           source_value
25473             , null              source_meaning
25474          FROM  xla_events_gt     xet  
25475         , CST_XLA_INV_LINES_V  l2
25476             ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
25477         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
25478           AND xet.event_type_code = C_EVENT_TYPE_CODE
25479             AND l2.event_id          = xet.event_id
25480 
25481 )
25482 ;
25483 --
25484 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25485 
25486       trace
25487          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
25488          ,p_level    => C_LEVEL_STATEMENT
25489          ,p_module   => l_log_module);
25490 
25491 END IF;
25492 
25493 
25494 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25495       trace
25496          (p_msg      => 'END of insert_sources_36'
25497          ,p_level    => C_LEVEL_PROCEDURE
25498          ,p_module   => l_log_module);
25499 END IF;
25500 EXCEPTION
25501   WHEN xla_exceptions_pkg.application_exception THEN
25502       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
25503             trace
25504                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
25505                ,p_level    => C_LEVEL_EXCEPTION
25506                ,p_module   => l_log_module);
25507       END IF;
25508       RAISE;
25509   WHEN OTHERS THEN
25510       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
25511             trace
25512                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
25513                ,p_level    => C_LEVEL_EXCEPTION
25514                ,p_module   => l_log_module);
25515        END IF;
25516        xla_exceptions_pkg.raise_message
25517            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_36');
25518 END insert_sources_36;
25519 --
25520 
25521 ---------------------------------------
25522 --
25523 -- PRIVATE FUNCTION
25524 --         EventType_36
25525 --
25526 ----------------------------------------
25527 --
25528 FUNCTION EventType_36
25529        (p_application_id         IN NUMBER
25530        ,p_base_ledger_id         IN NUMBER
25531        ,p_target_ledger_id       IN NUMBER
25532        ,p_language               IN VARCHAR2
25533        ,p_currency_code          IN VARCHAR2
25534        ,p_sla_ledger_id          IN NUMBER
25535        ,p_pad_start_date         IN DATE
25536        ,p_pad_end_date           IN DATE
25537        ,p_primary_ledger_id      IN NUMBER)
25538 RETURN BOOLEAN IS
25539 --
25540 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INT_ORDER_ISSUE_TP';
25541 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INT_ORDER_TO_EXP';
25542 
25543 l_calculate_acctd_flag   VARCHAR2(1) :='N';
25544 l_calculate_g_l_flag     VARCHAR2(1) :='N';
25545 --
25546 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25547 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25548 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
25549 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25550 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25551 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
25552 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
25553 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25554 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25555 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25556 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25557 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25558 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25559 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
25560 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25561 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25562 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25563 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
25564 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25565 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25566 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25567 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
25568 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
25569 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
25570 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
25571 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
25572 
25573 l_event_id                             NUMBER;
25574 l_previous_event_id                    NUMBER;
25575 l_first_event_id                       NUMBER;
25576 l_last_event_id                        NUMBER;
25577 
25578 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
25579 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
25580 --
25581 --
25582 l_result                    BOOLEAN := TRUE;
25583 l_rows                      NUMBER  := 1000;
25584 l_event_type_name           VARCHAR2(80) := 'Internal Order Issue to Expense, Transfer Pricing';
25585 l_event_class_name          VARCHAR2(80) := 'Internal Order to Expense';
25586 l_description               VARCHAR2(4000);
25587 l_transaction_reversal      NUMBER;
25588 l_ae_header_id              NUMBER;
25589 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
25590 l_log_module                VARCHAR2(240);
25591 --
25592 l_acct_reversal_source      VARCHAR2(30);
25593 l_trx_reversal_source       VARCHAR2(30);
25594 
25595 l_continue_with_lines       BOOLEAN := TRUE;
25596 --
25597 l_acc_rev_gl_date_source    DATE;                      -- 4262811
25598 --
25599 type t_array_event_id is table of number index by binary_integer;
25600 
25601 l_rec_array_event                    t_rec_array_event;
25602 l_null_rec_array_event               t_rec_array_event;
25603 l_array_ae_header_id                 xla_number_array_type;
25604 l_actual_flag                        VARCHAR2(1) := NULL;
25605 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
25606 l_balance_type_code                  VARCHAR2(1) :=NULL;
25607 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
25608 
25609 --
25610 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
25611 --
25612 
25613 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
25614 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
25615 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
25616 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
25617 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
25618 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
25619 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
25620 
25621 TYPE t_array_source_6 IS TABLE OF CST_XLA_INV_LINES_V.CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
25622 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
25623 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
25624 TYPE t_array_source_10 IS TABLE OF CST_XLA_INV_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
25625 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
25626 TYPE t_array_source_12 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
25627 TYPE t_array_source_13 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
25628 TYPE t_array_source_14 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
25629 TYPE t_array_source_15 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
25630 
25631 l_array_source_1              t_array_source_1;
25632 l_array_source_2              t_array_source_2;
25633 l_array_source_3              t_array_source_3;
25634 l_array_source_4              t_array_source_4;
25635 l_array_source_5              t_array_source_5;
25636 l_array_source_9              t_array_source_9;
25637 l_array_source_9_meaning      t_array_lookup_meaning;
25638 l_array_source_42              t_array_source_42;
25639 l_array_source_42_meaning      t_array_lookup_meaning;
25640 
25641 l_array_source_6      t_array_source_6;
25642 l_array_source_7      t_array_source_7;
25643 l_array_source_8      t_array_source_8;
25644 l_array_source_10      t_array_source_10;
25645 l_array_source_11      t_array_source_11;
25646 l_array_source_12      t_array_source_12;
25647 l_array_source_13      t_array_source_13;
25648 l_array_source_14      t_array_source_14;
25649 l_array_source_15      t_array_source_15;
25650 
25651 --
25652 CURSOR header_cur
25653 IS
25654 SELECT /*+ leading(xet) cardinality(xet,1) */
25655 -- Event Type Code: INT_ORDER_ISSUE_TP
25656 -- Event Class Code: INT_ORDER_TO_EXP
25657     xet.entity_id
25658   , xet.legal_entity_id
25659   , xet.entity_code
25660   , xet.transaction_number
25661   , xet.event_id
25662   , xet.event_class_code
25663   , xet.event_type_code
25664   , xet.event_number
25665   , xet.event_date
25666   , xet.transaction_date
25667   , xet.reference_num_1
25668   , xet.reference_num_2
25669   , xet.reference_num_3
25670   , xet.reference_num_4
25671   , xet.reference_char_1
25672   , xet.reference_char_2
25673   , xet.reference_char_3
25674   , xet.reference_char_4
25675   , xet.reference_date_1
25676   , xet.reference_date_2
25677   , xet.reference_date_3
25678   , xet.reference_date_4
25679   , xet.event_created_by
25680   , xet.budgetary_control_flag 
25681   , h1.TRANSACTION_ID    source_1
25682   , h4.ITEM_CONCATENATED_SEGMENTS    source_2
25683   , h3.TRANSACTION_QUANTITY    source_3
25684   , h3.TRANSACTION_UOM    source_4
25685   , h5.INV_TXN_TYPE_DESCRIPTION    source_5
25686   , h1.DISTRIBUTION_TYPE    source_9
25687   , fvl9.meaning   source_9_meaning
25688   , h1.TRANSFER_TO_GL_INDICATOR    source_42
25689   , fvl42.meaning   source_42_meaning
25690   FROM xla_events_gt     xet 
25691   , CST_XLA_INV_HEADERS_V  h1
25692   , CST_XLA_INV_REF_V  h3
25693   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h4
25694   , CST_XLA_INV_TXN_TYPES_REF_V  h5
25695   , fnd_lookup_values    fvl9
25696   , fnd_lookup_values    fvl42
25697  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
25698    and xet.event_type_code = C_EVENT_TYPE_CODE
25699    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
25700  AND h3.ref_transaction_id = h1.transaction_id AND h4.INVENTORY_ITEM_ID = h1.INVENTORY_ITEM_ID AND h4.ORGANIZATION_ID = h1.ORGANIZATION_ID AND h5.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID   AND fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
25701   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
25702   AND fvl9.view_application_id(+) = 700
25703   AND fvl9.language(+)            = USERENV('LANG')
25704      AND fvl42.lookup_type(+)         = 'YES_NO'
25705   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
25706   AND fvl42.view_application_id(+) = 0
25707   AND fvl42.language(+)            = USERENV('LANG')
25708   
25709  ORDER BY event_id
25710 ;
25711 
25712 
25713 --
25714 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
25715 IS
25716 SELECT /*+ leading(xet) cardinality(xet,1) */
25717 -- Event Type Code: INT_ORDER_ISSUE_TP
25718 -- Event Class Code: INT_ORDER_TO_EXP
25719     xet.entity_id
25720    ,xet.legal_entity_id
25721    ,xet.entity_code
25722    ,xet.transaction_number
25723    ,xet.event_id
25724    ,xet.event_class_code
25725    ,xet.event_type_code
25726    ,xet.event_number
25727    ,xet.event_date
25728    ,xet.transaction_date
25729    ,xet.reference_num_1
25730    ,xet.reference_num_2
25731    ,xet.reference_num_3
25732    ,xet.reference_num_4
25733    ,xet.reference_char_1
25734    ,xet.reference_char_2
25735    ,xet.reference_char_3
25736    ,xet.reference_char_4
25737    ,xet.reference_date_1
25738    ,xet.reference_date_2
25739    ,xet.reference_date_3
25740    ,xet.reference_date_4
25741    ,xet.event_created_by
25742    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
25743   , l2.CODE_COMBINATION_ID    source_6
25744   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
25745   , l2.DISTRIBUTION_IDENTIFIER    source_8
25746   , l2.ENTERED_AMOUNT    source_10
25747   , l2.CURRENCY_CODE    source_11
25748   , l2.CURRENCY_CONVERSION_DATE    source_12
25749   , l2.CURRENCY_CONVERSION_RATE    source_13
25750   , l2.CURRENCY_CONVERSION_TYPE    source_14
25751   , l2.ACCOUNTED_AMOUNT    source_15
25752   FROM xla_events_gt     xet 
25753   , CST_XLA_INV_LINES_V  l2
25754  WHERE xet.event_id between x_first_event_id and x_last_event_id
25755    and xet.event_date between p_pad_start_date and p_pad_end_date
25756    and xet.event_type_code = C_EVENT_TYPE_CODE
25757    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
25758 ;
25759 
25760 --
25761 BEGIN
25762 IF g_log_enabled THEN
25763    l_log_module := C_DEFAULT_MODULE||'.EventType_36';
25764 END IF;
25765 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25766    trace
25767       (p_msg      => 'BEGIN of EventType_36'
25768       ,p_level    => C_LEVEL_PROCEDURE
25769       ,p_module   => l_log_module);
25770 END IF;
25771 
25772 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25773    trace
25774       (p_msg      => 'p_application_id = '||p_application_id||
25775                      ' - p_base_ledger_id = '||p_base_ledger_id||
25776                      ' - p_target_ledger_id  = '||p_target_ledger_id||
25777                      ' - p_language = '||p_language||
25778                      ' - p_currency_code = '||p_currency_code||
25779                      ' - p_sla_ledger_id = '||p_sla_ledger_id
25780       ,p_level    => C_LEVEL_STATEMENT
25781       ,p_module   => l_log_module);
25782 END IF;
25783 --
25784 -- initialze arrays
25785 --
25786 g_array_event.DELETE;
25787 l_rec_array_event := l_null_rec_array_event;
25788 --
25789 --------------------------------------
25790 -- 4262811 Initialze MPA Line Number
25791 --------------------------------------
25792 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
25793 
25794 --
25795 
25796 --
25797 OPEN header_cur;
25798 --
25799 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
25800    trace
25801    (p_msg      => 'SQL - FETCH header_cur'
25802    ,p_level    => C_LEVEL_STATEMENT
25803    ,p_module   => l_log_module);
25804 END IF;
25805 --
25806 LOOP
25807 FETCH header_cur BULK COLLECT INTO
25808         l_array_entity_id
25809       , l_array_legal_entity_id
25810       , l_array_entity_code
25811       , l_array_transaction_num
25812       , l_array_event_id
25813       , l_array_class_code
25814       , l_array_event_type
25815       , l_array_event_number
25816       , l_array_event_date
25817       , l_array_transaction_date
25818       , l_array_reference_num_1
25819       , l_array_reference_num_2
25820       , l_array_reference_num_3
25821       , l_array_reference_num_4
25822       , l_array_reference_char_1
25823       , l_array_reference_char_2
25824       , l_array_reference_char_3
25825       , l_array_reference_char_4
25826       , l_array_reference_date_1
25827       , l_array_reference_date_2
25828       , l_array_reference_date_3
25829       , l_array_reference_date_4
25830       , l_array_event_created_by
25831       , l_array_budgetary_control_flag 
25832       , l_array_source_1
25833       , l_array_source_2
25834       , l_array_source_3
25835       , l_array_source_4
25836       , l_array_source_5
25837       , l_array_source_9
25838       , l_array_source_9_meaning
25839       , l_array_source_42
25840       , l_array_source_42_meaning
25841       LIMIT l_rows;
25842 --
25843 IF (C_LEVEL_EVENT >= g_log_level) THEN
25844    trace
25845    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
25846    ,p_level    => C_LEVEL_EVENT
25847    ,p_module   => l_log_module);
25848 END IF;
25849 --
25850 EXIT WHEN l_array_entity_id.COUNT = 0;
25851 
25852 -- initialize arrays
25853 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
25854 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
25855 
25856 --
25857 -- Bug 4458708
25858 --
25859 XLA_AE_LINES_PKG.g_LineNumber := 0;
25860 
25861 
25862 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
25863 g_last_hdr_idx := l_array_event_id.LAST;
25864 --
25865 -- loop for the headers. Each iteration is for each header extract row
25866 -- fetched in header cursor
25867 --
25868 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
25869 
25870 --
25871 -- set event info as cache for other routines to refer event attributes
25872 --
25873 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
25874    (p_application_id           => p_application_id
25875    ,p_primary_ledger_id        => p_primary_ledger_id
25876    ,p_base_ledger_id           => p_base_ledger_id
25877    ,p_target_ledger_id         => p_target_ledger_id
25878    ,p_entity_id                => l_array_entity_id(hdr_idx)
25879    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
25880    ,p_entity_code              => l_array_entity_code(hdr_idx)
25881    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
25882    ,p_event_id                 => l_array_event_id(hdr_idx)
25883    ,p_event_class_code         => l_array_class_code(hdr_idx)
25884    ,p_event_type_code          => l_array_event_type(hdr_idx)
25885    ,p_event_number             => l_array_event_number(hdr_idx)
25886    ,p_event_date               => l_array_event_date(hdr_idx)
25887    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
25888    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
25889    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
25890    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
25891    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
25892    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
25893    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
25894    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
25895    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
25896    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
25897    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
25898    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
25899    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
25900    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
25901    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
25902 
25903 --
25904 -- set the status of entry to C_VALID (0)
25905 --
25906 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
25907 
25908 --
25909 -- initialize a row for ae header
25910 --
25911 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
25912 
25913 l_event_id := l_array_event_id(hdr_idx);
25914 
25915 --
25916 -- storing the hdr_idx for event. May be used by line cursor.
25917 --
25918 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
25919 
25920 --
25921 -- store sources from header extract. This can be improved to
25922 -- store only those sources from header extract that may be used in lines
25923 --
25924 
25925 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
25926 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
25927 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
25928 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
25929 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
25930 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
25931 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
25932 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
25933 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
25934 
25935 --
25936 -- initilaize the status of ae headers for diffrent balance types
25937 -- the status is initialised to C_NOT_CREATED (2)
25938 --
25939 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
25940 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
25941 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
25942 
25943 --
25944 -- call api to validate and store accounting attributes for header
25945 --
25946 
25947 ------------------------------------------------------------
25948 -- Accrual Reversal : to get date for Standard Source (NONE)
25949 ------------------------------------------------------------
25950 l_acc_rev_gl_date_source := NULL;
25951 
25952      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
25953       l_rec_acct_attrs.array_date_value(1) := 
25954 xla_ae_sources_pkg.GetSystemSourceDate(
25955    p_source_code           => 'XLA_REFERENCE_DATE_1'
25956  , p_source_type_code      => 'Y'
25957  , p_source_application_id =>  602
25958 );
25959      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
25960       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_42');
25961 
25962 
25963 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
25964 
25965 XLA_AE_HEADER_PKG.SetJeCategoryName;
25966 
25967 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
25968 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
25969 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
25970 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
25971 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
25972 
25973 
25974 --
25975 xla_ae_header_pkg.SetHdrDescription(
25976    p_description => Description_1 (
25977    p_application_id => p_application_id 
25978  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
25979  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
25980  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
25981  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
25982  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
25983    )
25984 );
25985 --
25986 
25987 -- No header level analytical criteria
25988 
25989 --
25990 --accounting attribute enhancement, bug 3612931
25991 --
25992 l_trx_reversal_source := SUBSTR(NULL, 1,30);
25993 
25994 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
25995    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
25996 
25997    xla_accounting_err_pkg.build_message
25998       (p_appli_s_name            => 'XLA'
25999       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
26000       ,p_token_1                 => 'ACCT_ATTR_NAME'
26001       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
26002       ,p_token_2                 => 'PRODUCT_NAME'
26003       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
26004       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
26005       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
26006       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
26007 
26008 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
26009    --
26010    -- following sets the accounting attributes needed to reverse
26011    -- accounting for a distributeion
26012    --
26013    xla_ae_lines_pkg.SetTrxReversalAttrs
26014       (p_event_id              => l_event_id
26015       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
26016       ,p_trx_reversal_source   => l_trx_reversal_source);
26017 
26018 END IF;
26019 
26020 
26021 ----------------------------------------------------------------
26022 -- 4262811 -  update the header statuses to invalid in need be
26023 ----------------------------------------------------------------
26024 --
26025 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
26026 
26027 
26028   -----------------------------------------------
26029   -- No accrual reversal for the event class/type
26030   -----------------------------------------------
26031 ----------------------------------------------------------------
26032 
26033 --
26034 -- this ends the header loop iteration for one bulk fetch
26035 --
26036 END LOOP;
26037 
26038 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
26039 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
26040 
26041 --
26042 -- insert dummy rows into lines gt table that were created due to
26043 -- transaction reversals
26044 --
26045 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
26046    l_result := XLA_AE_LINES_PKG.InsertLines;
26047 END IF;
26048 
26049 --
26050 -- reset the temp_line_num for each set of events fetched from header
26051 -- cursor rather than doing it for each new event in line cursor
26052 -- Bug 3939231
26053 --
26054 xla_ae_lines_pkg.g_temp_line_num := 0;
26055 
26056 
26057 
26058 --
26059 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
26060 --
26061 --
26062 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26063 
26064       trace
26065          (p_msg      => 'SQL - FETCH line_cur'
26066          ,p_level    => C_LEVEL_STATEMENT
26067          ,p_module   => l_log_module);
26068 
26069 END IF;
26070 --
26071 --
26072 LOOP
26073   --
26074   FETCH line_cur BULK COLLECT INTO
26075         l_array_entity_id
26076       , l_array_legal_entity_id
26077       , l_array_entity_code
26078       , l_array_transaction_num
26079       , l_array_event_id
26080       , l_array_class_code
26081       , l_array_event_type
26082       , l_array_event_number
26083       , l_array_event_date
26084       , l_array_transaction_date
26085       , l_array_reference_num_1
26086       , l_array_reference_num_2
26087       , l_array_reference_num_3
26088       , l_array_reference_num_4
26089       , l_array_reference_char_1
26090       , l_array_reference_char_2
26091       , l_array_reference_char_3
26092       , l_array_reference_char_4
26093       , l_array_reference_date_1
26094       , l_array_reference_date_2
26095       , l_array_reference_date_3
26096       , l_array_reference_date_4
26097       , l_array_event_created_by
26098       , l_array_budgetary_control_flag
26099       , l_array_extract_line_num 
26100       , l_array_source_6
26101       , l_array_source_7
26102       , l_array_source_8
26103       , l_array_source_10
26104       , l_array_source_11
26105       , l_array_source_12
26106       , l_array_source_13
26107       , l_array_source_14
26108       , l_array_source_15
26109       LIMIT l_rows;
26110 
26111   --
26112   IF (C_LEVEL_EVENT >= g_log_level) THEN
26113             trace
26114                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
26115                ,p_level    => C_LEVEL_EVENT
26116                ,p_module   => l_log_module);
26117   END IF;
26118   --
26119   EXIT WHEN l_array_entity_id.count = 0;
26120 
26121   XLA_AE_LINES_PKG.g_rec_lines := null;
26122 
26123 --
26124 -- Bug 4458708
26125 --
26126 XLA_AE_LINES_PKG.g_LineNumber := 0;
26127 --
26128 --
26129 
26130 FOR Idx IN 1..l_array_event_id.count LOOP
26131    --
26132    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
26133    --
26134    l_event_id := l_array_event_id(idx);  -- 5648433
26135 
26136    --
26137    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
26138    --
26139 
26140    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
26141              (g_array_event(l_event_id).array_value_num('header_index'))
26142          ,'N'
26143          ) <> 'Y'
26144    THEN
26145       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26146          trace
26147             (p_msg      => 'Trancaction revesal option is not Y '
26148             ,p_level    => C_LEVEL_STATEMENT
26149             ,p_module   => l_log_module);
26150       END IF;
26151 
26152 --
26153 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
26154 --
26155 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
26156 --
26157 -- set event info as cache for other routines to refer event attributes
26158 --
26159 
26160 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
26161    l_previous_event_id := l_event_id;
26162 
26163    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
26164       (p_application_id           => p_application_id
26165       ,p_primary_ledger_id        => p_primary_ledger_id
26166       ,p_base_ledger_id           => p_base_ledger_id
26167       ,p_target_ledger_id         => p_target_ledger_id
26168       ,p_entity_id                => l_array_entity_id(Idx)
26169       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
26170       ,p_entity_code              => l_array_entity_code(Idx)
26171       ,p_transaction_num          => l_array_transaction_num(Idx)
26172       ,p_event_id                 => l_array_event_id(Idx)
26173       ,p_event_class_code         => l_array_class_code(Idx)
26174       ,p_event_type_code          => l_array_event_type(Idx)
26175       ,p_event_number             => l_array_event_number(Idx)
26176       ,p_event_date               => l_array_event_date(Idx)
26177       ,p_transaction_date         => l_array_transaction_date(Idx)
26178       ,p_reference_num_1          => l_array_reference_num_1(Idx)
26179       ,p_reference_num_2          => l_array_reference_num_2(Idx)
26180       ,p_reference_num_3          => l_array_reference_num_3(Idx)
26181       ,p_reference_num_4          => l_array_reference_num_4(Idx)
26182       ,p_reference_char_1         => l_array_reference_char_1(Idx)
26183       ,p_reference_char_2         => l_array_reference_char_2(Idx)
26184       ,p_reference_char_3         => l_array_reference_char_3(Idx)
26185       ,p_reference_char_4         => l_array_reference_char_4(Idx)
26186       ,p_reference_date_1         => l_array_reference_date_1(Idx)
26187       ,p_reference_date_2         => l_array_reference_date_2(Idx)
26188       ,p_reference_date_3         => l_array_reference_date_3(Idx)
26189       ,p_reference_date_4         => l_array_reference_date_4(Idx)
26190       ,p_event_created_by         => l_array_event_created_by(Idx)
26191       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
26192        --
26193 END IF;
26194 
26195 
26196 
26197 --
26198 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
26199 
26200 l_acct_reversal_source := SUBSTR(NULL, 1,30);
26201 
26202 IF l_continue_with_lines THEN
26203    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
26204       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
26205 
26206       xla_accounting_err_pkg.build_message
26207          (p_appli_s_name            => 'XLA'
26208          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
26209          ,p_token_1                 => 'LINE_NUMBER'
26210          ,p_value_1                 => l_array_extract_line_num(Idx)
26211          ,p_token_2                 => 'PRODUCT_NAME'
26212          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
26213          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
26214          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
26215          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
26216 
26217    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
26218       --
26219       -- following sets the accounting attributes needed to reverse
26220       -- accounting for a distributeion
26221       --
26222 
26223       --
26224       -- 5217187
26225       --
26226       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
26227       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
26228                                        g_array_event(l_event_id).array_value_num('header_index'));
26229       --
26230       --
26231 
26232       -- No reversal code generated
26233 
26234       xla_ae_lines_pkg.SetAcctReversalAttrs
26235          (p_event_id             => l_event_id
26236          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
26237          ,p_calculate_acctd_flag => l_calculate_acctd_flag
26238          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
26239    END IF;
26240 
26241    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
26242        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
26243 
26244 --
26245 AcctLineType_4 (
26246  p_application_id  => p_application_id
26247  ,p_event_id     => l_event_id
26248  ,p_calculate_acctd_flag => l_calculate_acctd_flag
26249  ,p_calculate_g_l_flag => l_calculate_g_l_flag
26250  ,p_actual_flag => l_actual_flag
26251  ,p_balance_type_code => l_balance_type_code
26252  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
26253  
26254  , p_source_6 => l_array_source_6(Idx)
26255  , p_source_7 => l_array_source_7(Idx)
26256  , p_source_8 => l_array_source_8(Idx)
26257  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
26258  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
26259  , p_source_10 => l_array_source_10(Idx)
26260  , p_source_11 => l_array_source_11(Idx)
26261  , p_source_12 => l_array_source_12(Idx)
26262  , p_source_13 => l_array_source_13(Idx)
26263  , p_source_14 => l_array_source_14(Idx)
26264  , p_source_15 => l_array_source_15(Idx)
26265  );
26266 If(l_balance_type_code = 'A') THEN
26267   l_actual_gain_loss_ref := l_gain_or_loss_ref;
26268 END IF;
26269 
26270 --
26271 
26272       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
26273       -- or secondary ledger that has different currency with primary
26274       -- or alc that is calculated by sla
26275       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
26276             (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'))
26277 
26278 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
26279 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
26280           AND (l_actual_flag = 'A')) THEN
26281         XLA_AE_LINES_PKG.CreateGainOrLossLines(
26282           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
26283          ,p_application_id   => p_application_id
26284          ,p_amb_context_code => 'DEFAULT'
26285          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
26286          ,p_event_class_code => C_EVENT_CLASS_CODE
26287          ,p_event_type_code  => C_EVENT_TYPE_CODE
26288          
26289          ,p_gain_ccid        => -1
26290          ,p_loss_ccid        => -1
26291 
26292          ,p_actual_flag      => l_actual_flag
26293          ,p_enc_flag         => null
26294          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
26295          ,p_enc_g_l_ref      => null
26296          );
26297       END IF;
26298    END IF;
26299 END IF;
26300 
26301    ELSE
26302       --
26303       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
26304       --
26305       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26306          trace
26307             (p_msg      => 'Trancaction revesal option is Y'
26308             ,p_level    => C_LEVEL_STATEMENT
26309             ,p_module   => l_log_module);
26310       END IF;
26311    END IF;
26312 
26313 END LOOP;
26314 l_result := XLA_AE_LINES_PKG.InsertLines ;
26315 end loop;
26316 close line_cur;
26317 
26318 
26319 --
26320 -- insert headers into xla_ae_headers_gt table
26321 --
26322 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
26323 
26324 -- insert into errors table here.
26325 
26326 END LOOP;
26327 
26328 --
26329 -- 4865292
26330 --
26331 -- Compare g_hdr_extract_count with event count in
26332 -- CreateHeadersAndLines.
26333 --
26334 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
26335 
26336 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26337    trace (p_msg     => '# rows extracted from header extract objects '
26338                     || ' (running total): '
26339                     || g_hdr_extract_count
26340          ,p_level   => C_LEVEL_STATEMENT
26341          ,p_module  => l_log_module);
26342 END IF;
26343 
26344 CLOSE header_cur;
26345 --
26346 
26347 --
26348 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26349    trace
26350       (p_msg      => 'END of EventType_36'
26351       ,p_level    => C_LEVEL_PROCEDURE
26352       ,p_module   => l_log_module);
26353 END IF;
26354 --
26355 RETURN l_result;
26356 EXCEPTION
26357 WHEN xla_exceptions_pkg.application_exception THEN
26358    
26359 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
26360 
26361    
26362 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
26363 
26364    RAISE;
26365 
26366 WHEN NO_DATA_FOUND THEN
26367 
26368 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
26369 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
26370 
26371 FOR header_record IN header_cur
26372 LOOP
26373     l_array_header_events(header_record.event_id) := header_record.event_id;
26374 END LOOP;
26375 
26376 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
26377 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
26378 
26379 fnd_file.put_line(fnd_file.LOG, '                    ');
26380 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
26381 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
26382 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
26383 
26384 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
26385 LOOP
26386 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
26387 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
26388         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
26389 	END IF;
26390 END LOOP;
26391 
26392 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
26393 fnd_file.put_line(fnd_file.LOG, '                    ');
26394 
26395 
26396 xla_exceptions_pkg.raise_message
26397       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_36');
26398 
26399 
26400 WHEN OTHERS THEN
26401    xla_exceptions_pkg.raise_message
26402       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_36');
26403 END EventType_36;
26404 --
26405 
26406 ---------------------------------------
26407 --
26408 -- PRIVATE PROCEDURE
26409 --         insert_sources_37
26410 --
26411 ----------------------------------------
26412 --
26413 PROCEDURE insert_sources_37(
26414                                 p_target_ledger_id       IN NUMBER
26415                               , p_language               IN VARCHAR2
26416                               , p_sla_ledger_id          IN NUMBER
26417                               , p_pad_start_date         IN DATE
26418                               , p_pad_end_date           IN DATE
26419                          )
26420 IS
26421 
26422 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_PO_DEL_ADJ';
26423 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
26424 p_apps_owner                   VARCHAR2(30);
26425 l_log_module                   VARCHAR2(240);
26426 BEGIN
26427 IF g_log_enabled THEN
26428       l_log_module := C_DEFAULT_MODULE||'.insert_sources_37';
26429 END IF;
26430 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26431 
26432       trace
26433          (p_msg      => 'BEGIN of insert_sources_37'
26434          ,p_level    => C_LEVEL_PROCEDURE
26435          ,p_module   => l_log_module);
26436 
26437 END IF;
26438 
26439 -- select APPS owner
26440 SELECT oracle_username
26441   INTO p_apps_owner
26442   FROM fnd_oracle_userid
26443  WHERE read_only_flag = 'U'
26444 ;
26445 
26446 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26447       trace
26448          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
26449                         ' - p_language = '||p_language||
26450                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
26451                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
26452                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
26453                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
26454          ,p_level    => C_LEVEL_STATEMENT
26455          ,p_module   => l_log_module);
26456 END IF;
26457 
26458 
26459 --
26460 INSERT INTO xla_diag_sources --hdr1
26461 (
26462         event_id
26463       , ledger_id
26464       , sla_ledger_id
26465       , description_language
26466       , object_name
26467       , object_type_code
26468       , line_number
26469       , source_application_id
26470       , source_type_code
26471       , source_code
26472       , source_value
26473       , source_meaning
26474       , created_by
26475       , creation_date
26476       , last_update_date
26477       , last_updated_by
26478       , last_update_login
26479       , program_update_date
26480       , program_application_id
26481       , program_id
26482       , request_id
26483 )
26484 SELECT
26485         event_id
26486       , p_target_ledger_id
26487       , p_sla_ledger_id
26488       , p_language
26489       , object_name
26490       , object_type_code
26491       , line_number
26492       , source_application_id
26493       , source_type_code
26494       , source_code
26495       , SUBSTR(source_value ,1,1996)
26496       , SUBSTR(source_meaning,1,200)
26497       , xla_environment_pkg.g_Usr_Id
26498       , TRUNC(SYSDATE)
26499       , TRUNC(SYSDATE)
26500       , xla_environment_pkg.g_Usr_Id
26501       , xla_environment_pkg.g_Login_Id
26502       , TRUNC(SYSDATE)
26503       , xla_environment_pkg.g_Prog_Appl_Id
26504       , xla_environment_pkg.g_Prog_Id
26505       , xla_environment_pkg.g_Req_Id
26506   FROM (
26507        SELECT xet.event_id                  event_id
26508             , 0                             line_number
26509             , CASE r
26510                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
26511                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
26512                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
26513                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
26514                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
26515                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
26516                 WHEN 7 THEN 'PO_HEADERS_REF_V' 
26517                 WHEN 8 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
26518                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
26519                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
26520                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
26521                 WHEN 12 THEN 'CST_XLA_INV_REF_V' 
26522                 WHEN 13 THEN 'CST_XLA_INV_REF_V' 
26523                 WHEN 14 THEN 'PO_DISTS_REF_V' 
26524                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
26525                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
26526                 WHEN 17 THEN 'PSA_CST_XLA_UPG_V' 
26527                 WHEN 18 THEN 'PO_HEADERS_REF_V' 
26528                 WHEN 19 THEN 'PO_DISTS_REF_V' 
26529                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
26530                 
26531                ELSE null
26532               END                           object_name
26533             , CASE r
26534                 WHEN 1 THEN 'HEADER' 
26535                 WHEN 2 THEN 'HEADER' 
26536                 WHEN 3 THEN 'HEADER' 
26537                 WHEN 4 THEN 'HEADER' 
26538                 WHEN 5 THEN 'HEADER' 
26539                 WHEN 6 THEN 'HEADER' 
26540                 WHEN 7 THEN 'HEADER' 
26541                 WHEN 8 THEN 'HEADER' 
26542                 WHEN 9 THEN 'HEADER' 
26543                 WHEN 10 THEN 'HEADER' 
26544                 WHEN 11 THEN 'HEADER' 
26545                 WHEN 12 THEN 'HEADER' 
26546                 WHEN 13 THEN 'HEADER' 
26547                 WHEN 14 THEN 'HEADER' 
26548                 WHEN 15 THEN 'HEADER' 
26549                 WHEN 16 THEN 'HEADER' 
26550                 WHEN 17 THEN 'HEADER' 
26551                 WHEN 18 THEN 'HEADER' 
26552                 WHEN 19 THEN 'HEADER' 
26553                 WHEN 20 THEN 'HEADER' 
26554                 
26555                 ELSE null
26556               END                           object_type_code
26557             , CASE r
26558                 WHEN 1 THEN '707' 
26559                 WHEN 2 THEN '707' 
26560                 WHEN 3 THEN '707' 
26561                 WHEN 4 THEN '707' 
26562                 WHEN 5 THEN '707' 
26563                 WHEN 6 THEN '707' 
26564                 WHEN 7 THEN '201' 
26565                 WHEN 8 THEN '707' 
26566                 WHEN 9 THEN '707' 
26567                 WHEN 10 THEN '707' 
26568                 WHEN 11 THEN '707' 
26569                 WHEN 12 THEN '707' 
26570                 WHEN 13 THEN '707' 
26571                 WHEN 14 THEN '201' 
26572                 WHEN 15 THEN '707' 
26573                 WHEN 16 THEN '707' 
26574                 WHEN 17 THEN '707' 
26575                 WHEN 18 THEN '201' 
26576                 WHEN 19 THEN '201' 
26577                 WHEN 20 THEN '707' 
26578                 
26579                 ELSE null
26580               END                           source_application_id
26581             , 'S'             source_type_code
26582             , CASE r
26583                 WHEN 1 THEN 'TRANSACTION_ID' 
26584                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
26585                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
26586                 WHEN 4 THEN 'TRANSACTION_UOM' 
26587                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
26588                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
26589                 WHEN 7 THEN 'PURCH_ENCUMBRANCE_FLAG' 
26590                 WHEN 8 THEN 'ENCUMBRANCE_REVERSAL_FLAG' 
26591                 WHEN 9 THEN 'APPLIED_TO_APPL_ID' 
26592                 WHEN 10 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
26593                 WHEN 11 THEN 'APPLIED_TO_ENTITY_CODE' 
26594                 WHEN 12 THEN 'TXN_PO_DISTRIBUTION_ID' 
26595                 WHEN 13 THEN 'APPLIED_TO_PO_DOC_ID' 
26596                 WHEN 14 THEN 'PO_BUDGET_ACCOUNT' 
26597                 WHEN 15 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
26598                 WHEN 16 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
26599                 WHEN 17 THEN 'CST_ENCUM_UPG_OPTION' 
26600                 WHEN 18 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
26601                 WHEN 19 THEN 'RESERVED_FLAG' 
26602                 WHEN 20 THEN 'TRANSFER_TO_GL_INDICATOR' 
26603                 
26604                 ELSE null
26605               END                           source_code
26606             , CASE r
26607                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
26608                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
26609                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
26610                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
26611                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
26612                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
26613                 WHEN 7 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_FLAG)
26614                 WHEN 8 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_FLAG)
26615                 WHEN 9 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
26616                 WHEN 10 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
26617                 WHEN 11 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
26618                 WHEN 12 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
26619                 WHEN 13 THEN TO_CHAR(h4.APPLIED_TO_PO_DOC_ID)
26620                 WHEN 14 THEN TO_CHAR(h7.PO_BUDGET_ACCOUNT)
26621                 WHEN 15 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
26622                 WHEN 16 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
26623                 WHEN 17 THEN TO_CHAR(h9.CST_ENCUM_UPG_OPTION)
26624                 WHEN 18 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_TYPE_ID)
26625                 WHEN 19 THEN TO_CHAR(h7.RESERVED_FLAG)
26626                 WHEN 20 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
26627                 
26628                 ELSE null
26629               END                           source_value
26630             , CASE r
26631                 WHEN 6 THEN fvl9.meaning
26632                 WHEN 20 THEN fvl42.meaning
26633                 
26634                 ELSE null
26635               END               source_meaning
26636         FROM xla_events_gt     xet  
26637       , CST_XLA_INV_HEADERS_V  h1
26638       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
26639       , CST_XLA_INV_REF_V  h4
26640       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
26641       , CST_XLA_INV_TXN_TYPES_REF_V  h6
26642       , PO_DISTS_REF_V  h7
26643       , PO_HEADERS_REF_V  h8
26644       , PSA_CST_XLA_UPG_V  h9
26645   , fnd_lookup_values    fvl9
26646   , fnd_lookup_values    fvl42
26647             ,(select rownum r from all_objects where rownum <= 20 and owner = p_apps_owner)
26648        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
26649          AND xet.event_type_code = C_EVENT_TYPE_CODE
26650             AND h1.event_id = xet.event_id
26651  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id  (+) = h1.inventory_item_id  and h5.organization_id  (+) = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h4.txn_po_header_id = h7.po_header_id  (+)  and h4.txn_po_distribution_id = h7.po_distribution_id (+)  AND h4.txn_po_header_id = h8.po_header_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 
26652 'CST_DISTRIBUTION_TYPE'
26653   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
26654   AND fvl9.view_application_id(+) = 700
26655   AND fvl9.language(+)            = USERENV('LANG')
26656      AND fvl42.lookup_type(+)         = 'YES_NO'
26657   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
26658   AND fvl42.view_application_id(+) = 0
26659   AND fvl42.language(+)            = USERENV('LANG')
26660   
26661 )
26662 ;
26663 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26664 
26665       trace
26666          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
26667          ,p_level    => C_LEVEL_STATEMENT
26668          ,p_module   => l_log_module);
26669 
26670 END IF;
26671 --
26672 
26673 
26674 
26675 --
26676 INSERT INTO xla_diag_sources --line1
26677 (
26678         event_id
26679       , ledger_id
26680       , sla_ledger_id
26681       , description_language
26682       , object_name
26683       , object_type_code
26684       , line_number
26685       , source_application_id
26686       , source_type_code
26687       , source_code
26688       , source_value
26689       , source_meaning
26690       , created_by
26691       , creation_date
26692       , last_update_date
26693       , last_updated_by
26694       , last_update_login
26695       , program_update_date
26696       , program_application_id
26697       , program_id
26698       , request_id
26699 )
26700 SELECT  event_id
26701       , p_target_ledger_id
26702       , p_sla_ledger_id
26703       , p_language
26704       , object_name
26705       , object_type_code
26706       , line_number
26707       , source_application_id
26708       , source_type_code
26709       , source_code
26710       , SUBSTR(source_value,1,1996)
26711       , SUBSTR(source_meaning,1,200)
26712       , xla_environment_pkg.g_Usr_Id
26713       , TRUNC(SYSDATE)
26714       , TRUNC(SYSDATE)
26715       , xla_environment_pkg.g_Usr_Id
26716       , xla_environment_pkg.g_Login_Id
26717       , TRUNC(SYSDATE)
26718       , xla_environment_pkg.g_Prog_Appl_Id
26719       , xla_environment_pkg.g_Prog_Id
26720       , xla_environment_pkg.g_Req_Id
26721   FROM (
26722        SELECT xet.event_id                  event_id
26723             , l2.line_number                 line_number
26724             , CASE r
26725                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
26726                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
26727                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
26728                 
26729                ELSE null
26730               END                           object_name
26731             , CASE r
26732                 WHEN 1 THEN 'LINE' 
26733                 WHEN 2 THEN 'LINE' 
26734                 WHEN 3 THEN 'LINE' 
26735                 
26736                 ELSE null
26737               END                           object_type_code
26738             , CASE r
26739                 WHEN 1 THEN '707' 
26740                 WHEN 2 THEN '707' 
26741                 WHEN 3 THEN '707' 
26742                 
26743                 ELSE null
26744               END                           source_application_id
26745             , 'S'             source_type_code
26746             , CASE r
26747                 WHEN 1 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
26748                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
26749                 WHEN 3 THEN 'CURRENCY_CODE' 
26750                 
26751                 ELSE null
26752               END                           source_code
26753             , CASE r
26754                 WHEN 1 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
26755                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
26756                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
26757                 
26758                 ELSE null
26759               END                           source_value
26760             , null              source_meaning
26761          FROM  xla_events_gt     xet  
26762         , CST_XLA_INV_LINES_V  l2
26763             ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
26764         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
26765           AND xet.event_type_code = C_EVENT_TYPE_CODE
26766             AND l2.event_id          = xet.event_id
26767 
26768 )
26769 ;
26770 --
26771 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
26772 
26773       trace
26774          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
26775          ,p_level    => C_LEVEL_STATEMENT
26776          ,p_module   => l_log_module);
26777 
26778 END IF;
26779 
26780 
26781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26782       trace
26783          (p_msg      => 'END of insert_sources_37'
26784          ,p_level    => C_LEVEL_PROCEDURE
26785          ,p_module   => l_log_module);
26786 END IF;
26787 EXCEPTION
26788   WHEN xla_exceptions_pkg.application_exception THEN
26789       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
26790             trace
26791                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
26792                ,p_level    => C_LEVEL_EXCEPTION
26793                ,p_module   => l_log_module);
26794       END IF;
26795       RAISE;
26796   WHEN OTHERS THEN
26797       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
26798             trace
26799                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
26800                ,p_level    => C_LEVEL_EXCEPTION
26801                ,p_module   => l_log_module);
26802        END IF;
26803        xla_exceptions_pkg.raise_message
26804            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_37');
26805 END insert_sources_37;
26806 --
26807 
26808 ---------------------------------------
26809 --
26810 -- PRIVATE FUNCTION
26811 --         EventType_37
26812 --
26813 ----------------------------------------
26814 --
26815 FUNCTION EventType_37
26816        (p_application_id         IN NUMBER
26817        ,p_base_ledger_id         IN NUMBER
26818        ,p_target_ledger_id       IN NUMBER
26819        ,p_language               IN VARCHAR2
26820        ,p_currency_code          IN VARCHAR2
26821        ,p_sla_ledger_id          IN NUMBER
26822        ,p_pad_start_date         IN DATE
26823        ,p_pad_end_date           IN DATE
26824        ,p_primary_ledger_id      IN NUMBER)
26825 RETURN BOOLEAN IS
26826 --
26827 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_PO_DEL_ADJ';
26828 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
26829 
26830 l_calculate_acctd_flag   VARCHAR2(1) :='N';
26831 l_calculate_g_l_flag     VARCHAR2(1) :='N';
26832 --
26833 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26834 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26835 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
26836 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26837 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26838 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
26839 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
26840 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26841 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26842 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26843 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26844 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26845 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26846 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
26847 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26848 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26849 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26850 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
26851 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26852 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26853 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26854 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
26855 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
26856 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
26857 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
26858 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
26859 
26860 l_event_id                             NUMBER;
26861 l_previous_event_id                    NUMBER;
26862 l_first_event_id                       NUMBER;
26863 l_last_event_id                        NUMBER;
26864 
26865 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
26866 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
26867 --
26868 --
26869 l_result                    BOOLEAN := TRUE;
26870 l_rows                      NUMBER  := 1000;
26871 l_event_type_name           VARCHAR2(80) := 'Logical PO Delivery Adjustment';
26872 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
26873 l_description               VARCHAR2(4000);
26874 l_transaction_reversal      NUMBER;
26875 l_ae_header_id              NUMBER;
26876 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
26877 l_log_module                VARCHAR2(240);
26878 --
26879 l_acct_reversal_source      VARCHAR2(30);
26880 l_trx_reversal_source       VARCHAR2(30);
26881 
26882 l_continue_with_lines       BOOLEAN := TRUE;
26883 --
26884 l_acc_rev_gl_date_source    DATE;                      -- 4262811
26885 --
26886 type t_array_event_id is table of number index by binary_integer;
26887 
26888 l_rec_array_event                    t_rec_array_event;
26889 l_null_rec_array_event               t_rec_array_event;
26890 l_array_ae_header_id                 xla_number_array_type;
26891 l_actual_flag                        VARCHAR2(1) := NULL;
26892 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
26893 l_balance_type_code                  VARCHAR2(1) :=NULL;
26894 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
26895 
26896 --
26897 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
26898 --
26899 
26900 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
26901 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
26902 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
26903 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
26904 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
26905 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
26906 TYPE t_array_source_16 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
26907 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.ENCUMBRANCE_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
26908 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
26909 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
26910 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
26911 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
26912 TYPE t_array_source_23 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
26913 TYPE t_array_source_24 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
26914 TYPE t_array_source_25 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
26915 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
26916 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
26917 TYPE t_array_source_28 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
26918 TYPE t_array_source_31 IS TABLE OF PO_DISTS_REF_V.RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
26919 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
26920 
26921 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
26922 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
26923 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
26924 
26925 l_array_source_1              t_array_source_1;
26926 l_array_source_2              t_array_source_2;
26927 l_array_source_3              t_array_source_3;
26928 l_array_source_4              t_array_source_4;
26929 l_array_source_5              t_array_source_5;
26930 l_array_source_9              t_array_source_9;
26931 l_array_source_9_meaning      t_array_lookup_meaning;
26932 l_array_source_16              t_array_source_16;
26933 l_array_source_17              t_array_source_17;
26934 l_array_source_19              t_array_source_19;
26935 l_array_source_20              t_array_source_20;
26936 l_array_source_21              t_array_source_21;
26937 l_array_source_22              t_array_source_22;
26938 l_array_source_23              t_array_source_23;
26939 l_array_source_24              t_array_source_24;
26940 l_array_source_25              t_array_source_25;
26941 l_array_source_26              t_array_source_26;
26942 l_array_source_27              t_array_source_27;
26943 l_array_source_28              t_array_source_28;
26944 l_array_source_31              t_array_source_31;
26945 l_array_source_42              t_array_source_42;
26946 l_array_source_42_meaning      t_array_lookup_meaning;
26947 
26948 l_array_source_7      t_array_source_7;
26949 l_array_source_8      t_array_source_8;
26950 l_array_source_11      t_array_source_11;
26951 
26952 --
26953 CURSOR header_cur
26954 IS
26955 SELECT /*+ leading(xet) cardinality(xet,1) */
26956 -- Event Type Code: LOG_PO_DEL_ADJ
26957 -- Event Class Code: PURCHASE_ORDER
26958     xet.entity_id
26959   , xet.legal_entity_id
26960   , xet.entity_code
26961   , xet.transaction_number
26962   , xet.event_id
26963   , xet.event_class_code
26964   , xet.event_type_code
26965   , xet.event_number
26966   , xet.event_date
26967   , xet.transaction_date
26968   , xet.reference_num_1
26969   , xet.reference_num_2
26970   , xet.reference_num_3
26971   , xet.reference_num_4
26972   , xet.reference_char_1
26973   , xet.reference_char_2
26974   , xet.reference_char_3
26975   , xet.reference_char_4
26976   , xet.reference_date_1
26977   , xet.reference_date_2
26978   , xet.reference_date_3
26979   , xet.reference_date_4
26980   , xet.event_created_by
26981   , xet.budgetary_control_flag 
26982   , h1.TRANSACTION_ID    source_1
26983   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
26984   , h4.TRANSACTION_QUANTITY    source_3
26985   , h4.TRANSACTION_UOM    source_4
26986   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
26987   , h1.DISTRIBUTION_TYPE    source_9
26988   , fvl9.meaning   source_9_meaning
26989   , h8.PURCH_ENCUMBRANCE_FLAG    source_16
26990   , h3.ENCUMBRANCE_REVERSAL_FLAG    source_17
26991   , h4.APPLIED_TO_APPL_ID    source_19
26992   , h4.APPLIED_TO_DIST_LINK_TYPE    source_20
26993   , h4.APPLIED_TO_ENTITY_CODE    source_21
26994   , h4.TXN_PO_DISTRIBUTION_ID    source_22
26995   , h4.APPLIED_TO_PO_DOC_ID    source_23
26996   , h7.PO_BUDGET_ACCOUNT    source_24
26997   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_25
26998   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_26
26999   , h9.CST_ENCUM_UPG_OPTION    source_27
27000   , h8.PURCH_ENCUMBRANCE_TYPE_ID    source_28
27001   , h7.RESERVED_FLAG    source_31
27002   , h1.TRANSFER_TO_GL_INDICATOR    source_42
27003   , fvl42.meaning   source_42_meaning
27004   FROM xla_events_gt     xet 
27005   , CST_XLA_INV_HEADERS_V  h1
27006   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
27007   , CST_XLA_INV_REF_V  h4
27008   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
27009   , CST_XLA_INV_TXN_TYPES_REF_V  h6
27010   , PO_DISTS_REF_V  h7
27011   , PO_HEADERS_REF_V  h8
27012   , PSA_CST_XLA_UPG_V  h9
27013   , fnd_lookup_values    fvl9
27014   , fnd_lookup_values    fvl42
27015  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
27016    and xet.event_type_code = C_EVENT_TYPE_CODE
27017    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
27018  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h5.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h4.txn_po_header_id = h7.po_header_id  (+)  AND h4.txn_po_distribution_id = h7.po_distribution_id (+)  AND h4.txn_po_header_id = h8.po_header_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 
27019 'CST_DISTRIBUTION_TYPE'
27020   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
27021   AND fvl9.view_application_id(+) = 700
27022   AND fvl9.language(+)            = USERENV('LANG')
27023      AND fvl42.lookup_type(+)         = 'YES_NO'
27024   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
27025   AND fvl42.view_application_id(+) = 0
27026   AND fvl42.language(+)            = USERENV('LANG')
27027   
27028  ORDER BY event_id
27029 ;
27030 
27031 
27032 --
27033 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
27034 IS
27035 SELECT /*+ leading(xet) cardinality(xet,1) */
27036 -- Event Type Code: LOG_PO_DEL_ADJ
27037 -- Event Class Code: PURCHASE_ORDER
27038     xet.entity_id
27039    ,xet.legal_entity_id
27040    ,xet.entity_code
27041    ,xet.transaction_number
27042    ,xet.event_id
27043    ,xet.event_class_code
27044    ,xet.event_type_code
27045    ,xet.event_number
27046    ,xet.event_date
27047    ,xet.transaction_date
27048    ,xet.reference_num_1
27049    ,xet.reference_num_2
27050    ,xet.reference_num_3
27051    ,xet.reference_num_4
27052    ,xet.reference_char_1
27053    ,xet.reference_char_2
27054    ,xet.reference_char_3
27055    ,xet.reference_char_4
27056    ,xet.reference_date_1
27057    ,xet.reference_date_2
27058    ,xet.reference_date_3
27059    ,xet.reference_date_4
27060    ,xet.event_created_by
27061    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
27062   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
27063   , l2.DISTRIBUTION_IDENTIFIER    source_8
27064   , l2.CURRENCY_CODE    source_11
27065   FROM xla_events_gt     xet 
27066   , CST_XLA_INV_LINES_V  l2
27067  WHERE xet.event_id between x_first_event_id and x_last_event_id
27068    and xet.event_date between p_pad_start_date and p_pad_end_date
27069    and xet.event_type_code = C_EVENT_TYPE_CODE
27070    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
27071 ;
27072 
27073 --
27074 BEGIN
27075 IF g_log_enabled THEN
27076    l_log_module := C_DEFAULT_MODULE||'.EventType_37';
27077 END IF;
27078 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27079    trace
27080       (p_msg      => 'BEGIN of EventType_37'
27081       ,p_level    => C_LEVEL_PROCEDURE
27082       ,p_module   => l_log_module);
27083 END IF;
27084 
27085 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27086    trace
27087       (p_msg      => 'p_application_id = '||p_application_id||
27088                      ' - p_base_ledger_id = '||p_base_ledger_id||
27089                      ' - p_target_ledger_id  = '||p_target_ledger_id||
27090                      ' - p_language = '||p_language||
27091                      ' - p_currency_code = '||p_currency_code||
27092                      ' - p_sla_ledger_id = '||p_sla_ledger_id
27093       ,p_level    => C_LEVEL_STATEMENT
27094       ,p_module   => l_log_module);
27095 END IF;
27096 --
27097 -- initialze arrays
27098 --
27099 g_array_event.DELETE;
27100 l_rec_array_event := l_null_rec_array_event;
27101 --
27102 --------------------------------------
27103 -- 4262811 Initialze MPA Line Number
27104 --------------------------------------
27105 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
27106 
27107 --
27108 
27109 --
27110 OPEN header_cur;
27111 --
27112 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27113    trace
27114    (p_msg      => 'SQL - FETCH header_cur'
27115    ,p_level    => C_LEVEL_STATEMENT
27116    ,p_module   => l_log_module);
27117 END IF;
27118 --
27119 LOOP
27120 FETCH header_cur BULK COLLECT INTO
27121         l_array_entity_id
27122       , l_array_legal_entity_id
27123       , l_array_entity_code
27124       , l_array_transaction_num
27125       , l_array_event_id
27126       , l_array_class_code
27127       , l_array_event_type
27128       , l_array_event_number
27129       , l_array_event_date
27130       , l_array_transaction_date
27131       , l_array_reference_num_1
27132       , l_array_reference_num_2
27133       , l_array_reference_num_3
27134       , l_array_reference_num_4
27135       , l_array_reference_char_1
27136       , l_array_reference_char_2
27137       , l_array_reference_char_3
27138       , l_array_reference_char_4
27139       , l_array_reference_date_1
27140       , l_array_reference_date_2
27141       , l_array_reference_date_3
27142       , l_array_reference_date_4
27143       , l_array_event_created_by
27144       , l_array_budgetary_control_flag 
27145       , l_array_source_1
27146       , l_array_source_2
27147       , l_array_source_3
27148       , l_array_source_4
27149       , l_array_source_5
27150       , l_array_source_9
27151       , l_array_source_9_meaning
27152       , l_array_source_16
27153       , l_array_source_17
27154       , l_array_source_19
27155       , l_array_source_20
27156       , l_array_source_21
27157       , l_array_source_22
27158       , l_array_source_23
27159       , l_array_source_24
27160       , l_array_source_25
27161       , l_array_source_26
27162       , l_array_source_27
27163       , l_array_source_28
27164       , l_array_source_31
27165       , l_array_source_42
27166       , l_array_source_42_meaning
27167       LIMIT l_rows;
27168 --
27169 IF (C_LEVEL_EVENT >= g_log_level) THEN
27170    trace
27171    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
27172    ,p_level    => C_LEVEL_EVENT
27173    ,p_module   => l_log_module);
27174 END IF;
27175 --
27176 EXIT WHEN l_array_entity_id.COUNT = 0;
27177 
27178 -- initialize arrays
27179 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
27180 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
27181 
27182 --
27183 -- Bug 4458708
27184 --
27185 XLA_AE_LINES_PKG.g_LineNumber := 0;
27186 
27187 
27188 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
27189 g_last_hdr_idx := l_array_event_id.LAST;
27190 --
27191 -- loop for the headers. Each iteration is for each header extract row
27192 -- fetched in header cursor
27193 --
27194 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
27195 
27196 --
27197 -- set event info as cache for other routines to refer event attributes
27198 --
27199 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
27200    (p_application_id           => p_application_id
27201    ,p_primary_ledger_id        => p_primary_ledger_id
27202    ,p_base_ledger_id           => p_base_ledger_id
27203    ,p_target_ledger_id         => p_target_ledger_id
27204    ,p_entity_id                => l_array_entity_id(hdr_idx)
27205    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
27206    ,p_entity_code              => l_array_entity_code(hdr_idx)
27207    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
27208    ,p_event_id                 => l_array_event_id(hdr_idx)
27209    ,p_event_class_code         => l_array_class_code(hdr_idx)
27210    ,p_event_type_code          => l_array_event_type(hdr_idx)
27211    ,p_event_number             => l_array_event_number(hdr_idx)
27212    ,p_event_date               => l_array_event_date(hdr_idx)
27213    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
27214    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
27215    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
27216    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
27217    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
27218    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
27219    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
27220    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
27221    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
27222    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
27223    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
27224    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
27225    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
27226    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
27227    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
27228 
27229 --
27230 -- set the status of entry to C_VALID (0)
27231 --
27232 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
27233 
27234 --
27235 -- initialize a row for ae header
27236 --
27237 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
27238 
27239 l_event_id := l_array_event_id(hdr_idx);
27240 
27241 --
27242 -- storing the hdr_idx for event. May be used by line cursor.
27243 --
27244 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
27245 
27246 --
27247 -- store sources from header extract. This can be improved to
27248 -- store only those sources from header extract that may be used in lines
27249 --
27250 
27251 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
27252 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
27253 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
27254 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
27255 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
27256 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
27257 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
27258 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
27259 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
27260 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
27261 g_array_event(l_event_id).array_value_char('source_20') := l_array_source_20(hdr_idx);
27262 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
27263 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
27264 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
27265 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
27266 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
27267 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
27268 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
27269 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
27270 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
27271 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
27272 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
27273 
27274 --
27275 -- initilaize the status of ae headers for diffrent balance types
27276 -- the status is initialised to C_NOT_CREATED (2)
27277 --
27278 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
27279 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
27280 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
27281 
27282 --
27283 -- call api to validate and store accounting attributes for header
27284 --
27285 
27286 ------------------------------------------------------------
27287 -- Accrual Reversal : to get date for Standard Source (NONE)
27288 ------------------------------------------------------------
27289 l_acc_rev_gl_date_source := NULL;
27290 
27291      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
27292       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_28');
27293      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
27294       l_rec_acct_attrs.array_date_value(2) := 
27295 xla_ae_sources_pkg.GetSystemSourceDate(
27296    p_source_code           => 'XLA_REFERENCE_DATE_1'
27297  , p_source_type_code      => 'Y'
27298  , p_source_application_id =>  602
27299 );
27300      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
27301       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_42');
27302 
27303 
27304 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
27305 
27306 XLA_AE_HEADER_PKG.SetJeCategoryName;
27307 
27308 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
27309 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
27310 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
27311 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
27312 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
27313 
27314 
27315 --
27316 xla_ae_header_pkg.SetHdrDescription(
27317    p_description => Description_1 (
27318    p_application_id => p_application_id 
27319  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
27320  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
27321  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
27322  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
27323  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
27324    )
27325 );
27326 --
27327 
27328 -- No header level analytical criteria
27329 
27330 --
27331 --accounting attribute enhancement, bug 3612931
27332 --
27333 l_trx_reversal_source := SUBSTR(NULL, 1,30);
27334 
27335 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
27336    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
27337 
27338    xla_accounting_err_pkg.build_message
27339       (p_appli_s_name            => 'XLA'
27340       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
27341       ,p_token_1                 => 'ACCT_ATTR_NAME'
27342       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
27343       ,p_token_2                 => 'PRODUCT_NAME'
27344       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
27345       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
27346       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
27347       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
27348 
27349 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
27350    --
27351    -- following sets the accounting attributes needed to reverse
27352    -- accounting for a distributeion
27353    --
27354    xla_ae_lines_pkg.SetTrxReversalAttrs
27355       (p_event_id              => l_event_id
27356       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
27357       ,p_trx_reversal_source   => l_trx_reversal_source);
27358 
27359 END IF;
27360 
27361 
27362 ----------------------------------------------------------------
27363 -- 4262811 -  update the header statuses to invalid in need be
27364 ----------------------------------------------------------------
27365 --
27366 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
27367 
27368 
27369   -----------------------------------------------
27370   -- No accrual reversal for the event class/type
27371   -----------------------------------------------
27372 ----------------------------------------------------------------
27373 
27374 --
27375 -- this ends the header loop iteration for one bulk fetch
27376 --
27377 END LOOP;
27378 
27379 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
27380 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
27381 
27382 --
27383 -- insert dummy rows into lines gt table that were created due to
27384 -- transaction reversals
27385 --
27386 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
27387    l_result := XLA_AE_LINES_PKG.InsertLines;
27388 END IF;
27389 
27390 --
27391 -- reset the temp_line_num for each set of events fetched from header
27392 -- cursor rather than doing it for each new event in line cursor
27393 -- Bug 3939231
27394 --
27395 xla_ae_lines_pkg.g_temp_line_num := 0;
27396 
27397 
27398 
27399 --
27400 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
27401 --
27402 --
27403 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27404 
27405       trace
27406          (p_msg      => 'SQL - FETCH line_cur'
27407          ,p_level    => C_LEVEL_STATEMENT
27408          ,p_module   => l_log_module);
27409 
27410 END IF;
27411 --
27412 --
27413 LOOP
27414   --
27415   FETCH line_cur BULK COLLECT INTO
27416         l_array_entity_id
27417       , l_array_legal_entity_id
27418       , l_array_entity_code
27419       , l_array_transaction_num
27420       , l_array_event_id
27421       , l_array_class_code
27422       , l_array_event_type
27423       , l_array_event_number
27424       , l_array_event_date
27425       , l_array_transaction_date
27426       , l_array_reference_num_1
27427       , l_array_reference_num_2
27428       , l_array_reference_num_3
27429       , l_array_reference_num_4
27430       , l_array_reference_char_1
27431       , l_array_reference_char_2
27432       , l_array_reference_char_3
27433       , l_array_reference_char_4
27434       , l_array_reference_date_1
27435       , l_array_reference_date_2
27436       , l_array_reference_date_3
27437       , l_array_reference_date_4
27438       , l_array_event_created_by
27439       , l_array_budgetary_control_flag
27440       , l_array_extract_line_num 
27441       , l_array_source_7
27442       , l_array_source_8
27443       , l_array_source_11
27444       LIMIT l_rows;
27445 
27446   --
27447   IF (C_LEVEL_EVENT >= g_log_level) THEN
27448             trace
27449                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
27450                ,p_level    => C_LEVEL_EVENT
27451                ,p_module   => l_log_module);
27452   END IF;
27453   --
27454   EXIT WHEN l_array_entity_id.count = 0;
27455 
27456   XLA_AE_LINES_PKG.g_rec_lines := null;
27457 
27458 --
27459 -- Bug 4458708
27460 --
27461 XLA_AE_LINES_PKG.g_LineNumber := 0;
27462 --
27463 --
27464 
27465 FOR Idx IN 1..l_array_event_id.count LOOP
27466    --
27467    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
27468    --
27469    l_event_id := l_array_event_id(idx);  -- 5648433
27470 
27471    --
27472    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
27473    --
27474 
27475    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
27476              (g_array_event(l_event_id).array_value_num('header_index'))
27477          ,'N'
27478          ) <> 'Y'
27479    THEN
27480       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27481          trace
27482             (p_msg      => 'Trancaction revesal option is not Y '
27483             ,p_level    => C_LEVEL_STATEMENT
27484             ,p_module   => l_log_module);
27485       END IF;
27486 
27487 --
27488 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
27489 --
27490 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
27491 --
27492 -- set event info as cache for other routines to refer event attributes
27493 --
27494 
27495 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
27496    l_previous_event_id := l_event_id;
27497 
27498    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
27499       (p_application_id           => p_application_id
27500       ,p_primary_ledger_id        => p_primary_ledger_id
27501       ,p_base_ledger_id           => p_base_ledger_id
27502       ,p_target_ledger_id         => p_target_ledger_id
27503       ,p_entity_id                => l_array_entity_id(Idx)
27504       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
27505       ,p_entity_code              => l_array_entity_code(Idx)
27506       ,p_transaction_num          => l_array_transaction_num(Idx)
27507       ,p_event_id                 => l_array_event_id(Idx)
27508       ,p_event_class_code         => l_array_class_code(Idx)
27509       ,p_event_type_code          => l_array_event_type(Idx)
27510       ,p_event_number             => l_array_event_number(Idx)
27511       ,p_event_date               => l_array_event_date(Idx)
27512       ,p_transaction_date         => l_array_transaction_date(Idx)
27513       ,p_reference_num_1          => l_array_reference_num_1(Idx)
27514       ,p_reference_num_2          => l_array_reference_num_2(Idx)
27515       ,p_reference_num_3          => l_array_reference_num_3(Idx)
27516       ,p_reference_num_4          => l_array_reference_num_4(Idx)
27517       ,p_reference_char_1         => l_array_reference_char_1(Idx)
27518       ,p_reference_char_2         => l_array_reference_char_2(Idx)
27519       ,p_reference_char_3         => l_array_reference_char_3(Idx)
27520       ,p_reference_char_4         => l_array_reference_char_4(Idx)
27521       ,p_reference_date_1         => l_array_reference_date_1(Idx)
27522       ,p_reference_date_2         => l_array_reference_date_2(Idx)
27523       ,p_reference_date_3         => l_array_reference_date_3(Idx)
27524       ,p_reference_date_4         => l_array_reference_date_4(Idx)
27525       ,p_event_created_by         => l_array_event_created_by(Idx)
27526       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
27527        --
27528 END IF;
27529 
27530 
27531 
27532 --
27533 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
27534 
27535 l_acct_reversal_source := SUBSTR(NULL, 1,30);
27536 
27537 IF l_continue_with_lines THEN
27538    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
27539       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
27540 
27541       xla_accounting_err_pkg.build_message
27542          (p_appli_s_name            => 'XLA'
27543          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
27544          ,p_token_1                 => 'LINE_NUMBER'
27545          ,p_value_1                 => l_array_extract_line_num(Idx)
27546          ,p_token_2                 => 'PRODUCT_NAME'
27547          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
27548          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
27549          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
27550          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
27551 
27552    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
27553       --
27554       -- following sets the accounting attributes needed to reverse
27555       -- accounting for a distributeion
27556       --
27557 
27558       --
27559       -- 5217187
27560       --
27561       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
27562       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
27563                                        g_array_event(l_event_id).array_value_num('header_index'));
27564       --
27565       --
27566 
27567       -- No reversal code generated
27568 
27569       xla_ae_lines_pkg.SetAcctReversalAttrs
27570          (p_event_id             => l_event_id
27571          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
27572          ,p_calculate_acctd_flag => l_calculate_acctd_flag
27573          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
27574    END IF;
27575 
27576    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
27577        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
27578 
27579 --
27580 AcctLineType_9 (
27581  p_application_id  => p_application_id
27582  ,p_event_id     => l_event_id
27583  ,p_calculate_acctd_flag => l_calculate_acctd_flag
27584  ,p_calculate_g_l_flag => l_calculate_g_l_flag
27585  ,p_actual_flag => l_actual_flag
27586  ,p_balance_type_code => l_balance_type_code
27587  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
27588  
27589  , p_source_8 => l_array_source_8(Idx)
27590  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
27591  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
27592  , p_source_11 => l_array_source_11(Idx)
27593  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
27594  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
27595  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
27596  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
27597  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
27598  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
27599  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
27600  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
27601  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
27602  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
27603  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
27604  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
27605  );
27606 If(l_balance_type_code = 'A') THEN
27607   l_actual_gain_loss_ref := l_gain_or_loss_ref;
27608 END IF;
27609 
27610 --
27611 
27612 
27613 --
27614 AcctLineType_18 (
27615  p_application_id  => p_application_id
27616  ,p_event_id     => l_event_id
27617  ,p_calculate_acctd_flag => l_calculate_acctd_flag
27618  ,p_calculate_g_l_flag => l_calculate_g_l_flag
27619  ,p_actual_flag => l_actual_flag
27620  ,p_balance_type_code => l_balance_type_code
27621  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
27622  
27623  , p_source_7 => l_array_source_7(Idx)
27624  , p_source_8 => l_array_source_8(Idx)
27625  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
27626  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
27627  , p_source_11 => l_array_source_11(Idx)
27628  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
27629  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
27630  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
27631  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
27632  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
27633  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
27634  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
27635  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
27636  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
27637  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
27638  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
27639  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
27640  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
27641  );
27642 If(l_balance_type_code = 'A') THEN
27643   l_actual_gain_loss_ref := l_gain_or_loss_ref;
27644 END IF;
27645 
27646 --
27647 
27648       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
27649       -- or secondary ledger that has different currency with primary
27650       -- or alc that is calculated by sla
27651       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
27652             (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'))
27653 
27654 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
27655 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
27656           AND (l_actual_flag = 'A')) THEN
27657         XLA_AE_LINES_PKG.CreateGainOrLossLines(
27658           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
27659          ,p_application_id   => p_application_id
27660          ,p_amb_context_code => 'DEFAULT'
27661          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
27662          ,p_event_class_code => C_EVENT_CLASS_CODE
27663          ,p_event_type_code  => C_EVENT_TYPE_CODE
27664          
27665          ,p_gain_ccid        => -1
27666          ,p_loss_ccid        => -1
27667 
27668          ,p_actual_flag      => l_actual_flag
27669          ,p_enc_flag         => null
27670          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
27671          ,p_enc_g_l_ref      => null
27672          );
27673       END IF;
27674    END IF;
27675 END IF;
27676 
27677    ELSE
27678       --
27679       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
27680       --
27681       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27682          trace
27683             (p_msg      => 'Trancaction revesal option is Y'
27684             ,p_level    => C_LEVEL_STATEMENT
27685             ,p_module   => l_log_module);
27686       END IF;
27687    END IF;
27688 
27689 END LOOP;
27690 l_result := XLA_AE_LINES_PKG.InsertLines ;
27691 end loop;
27692 close line_cur;
27693 
27694 
27695 --
27696 -- insert headers into xla_ae_headers_gt table
27697 --
27698 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
27699 
27700 -- insert into errors table here.
27701 
27702 END LOOP;
27703 
27704 --
27705 -- 4865292
27706 --
27707 -- Compare g_hdr_extract_count with event count in
27708 -- CreateHeadersAndLines.
27709 --
27710 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
27711 
27712 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27713    trace (p_msg     => '# rows extracted from header extract objects '
27714                     || ' (running total): '
27715                     || g_hdr_extract_count
27716          ,p_level   => C_LEVEL_STATEMENT
27717          ,p_module  => l_log_module);
27718 END IF;
27719 
27720 CLOSE header_cur;
27721 --
27722 
27723 --
27724 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27725    trace
27726       (p_msg      => 'END of EventType_37'
27727       ,p_level    => C_LEVEL_PROCEDURE
27728       ,p_module   => l_log_module);
27729 END IF;
27730 --
27731 RETURN l_result;
27732 EXCEPTION
27733 WHEN xla_exceptions_pkg.application_exception THEN
27734    
27735 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
27736 
27737    
27738 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
27739 
27740    RAISE;
27741 
27742 WHEN NO_DATA_FOUND THEN
27743 
27744 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
27745 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
27746 
27747 FOR header_record IN header_cur
27748 LOOP
27749     l_array_header_events(header_record.event_id) := header_record.event_id;
27750 END LOOP;
27751 
27752 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
27753 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
27754 
27755 fnd_file.put_line(fnd_file.LOG, '                    ');
27756 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
27757 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
27758 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
27759 
27760 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
27761 LOOP
27762 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
27763 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
27764         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
27765 	END IF;
27766 END LOOP;
27767 
27768 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
27769 fnd_file.put_line(fnd_file.LOG, '                    ');
27770 
27771 
27772 xla_exceptions_pkg.raise_message
27773       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_37');
27774 
27775 
27776 WHEN OTHERS THEN
27777    xla_exceptions_pkg.raise_message
27778       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_37');
27779 END EventType_37;
27780 --
27781 
27782 ---------------------------------------
27783 --
27784 -- PRIVATE PROCEDURE
27785 --         insert_sources_38
27786 --
27787 ----------------------------------------
27788 --
27789 PROCEDURE insert_sources_38(
27790                                 p_target_ledger_id       IN NUMBER
27791                               , p_language               IN VARCHAR2
27792                               , p_sla_ledger_id          IN NUMBER
27793                               , p_pad_start_date         IN DATE
27794                               , p_pad_end_date           IN DATE
27795                          )
27796 IS
27797 
27798 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_PO_DEL_INV';
27799 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
27800 p_apps_owner                   VARCHAR2(30);
27801 l_log_module                   VARCHAR2(240);
27802 BEGIN
27803 IF g_log_enabled THEN
27804       l_log_module := C_DEFAULT_MODULE||'.insert_sources_38';
27805 END IF;
27806 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27807 
27808       trace
27809          (p_msg      => 'BEGIN of insert_sources_38'
27810          ,p_level    => C_LEVEL_PROCEDURE
27811          ,p_module   => l_log_module);
27812 
27813 END IF;
27814 
27815 -- select APPS owner
27816 SELECT oracle_username
27817   INTO p_apps_owner
27818   FROM fnd_oracle_userid
27819  WHERE read_only_flag = 'U'
27820 ;
27821 
27822 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
27823       trace
27824          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
27825                         ' - p_language = '||p_language||
27826                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
27827                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
27828                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
27829                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
27830          ,p_level    => C_LEVEL_STATEMENT
27831          ,p_module   => l_log_module);
27832 END IF;
27833 
27834 
27835 --
27836 INSERT INTO xla_diag_sources --hdr1
27837 (
27838         event_id
27839       , ledger_id
27840       , sla_ledger_id
27841       , description_language
27842       , object_name
27843       , object_type_code
27844       , line_number
27845       , source_application_id
27846       , source_type_code
27847       , source_code
27848       , source_value
27849       , source_meaning
27850       , created_by
27851       , creation_date
27852       , last_update_date
27853       , last_updated_by
27854       , last_update_login
27855       , program_update_date
27856       , program_application_id
27857       , program_id
27858       , request_id
27859 )
27860 SELECT
27861         event_id
27862       , p_target_ledger_id
27863       , p_sla_ledger_id
27864       , p_language
27865       , object_name
27866       , object_type_code
27867       , line_number
27868       , source_application_id
27869       , source_type_code
27870       , source_code
27871       , SUBSTR(source_value ,1,1996)
27872       , SUBSTR(source_meaning,1,200)
27873       , xla_environment_pkg.g_Usr_Id
27874       , TRUNC(SYSDATE)
27875       , TRUNC(SYSDATE)
27876       , xla_environment_pkg.g_Usr_Id
27877       , xla_environment_pkg.g_Login_Id
27878       , TRUNC(SYSDATE)
27879       , xla_environment_pkg.g_Prog_Appl_Id
27880       , xla_environment_pkg.g_Prog_Id
27881       , xla_environment_pkg.g_Req_Id
27882   FROM (
27883        SELECT xet.event_id                  event_id
27884             , 0                             line_number
27885             , CASE r
27886                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
27887                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
27888                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
27889                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
27890                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
27891                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
27892                 WHEN 7 THEN 'PO_HEADERS_REF_V' 
27893                 WHEN 8 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
27894                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
27895                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
27896                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
27897                 WHEN 12 THEN 'CST_XLA_INV_REF_V' 
27898                 WHEN 13 THEN 'CST_XLA_INV_REF_V' 
27899                 WHEN 14 THEN 'PO_DISTS_REF_V' 
27900                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
27901                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
27902                 WHEN 17 THEN 'PSA_CST_XLA_UPG_V' 
27903                 WHEN 18 THEN 'PO_HEADERS_REF_V' 
27904                 WHEN 19 THEN 'PO_DISTS_REF_V' 
27905                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
27906                 
27907                ELSE null
27908               END                           object_name
27909             , CASE r
27910                 WHEN 1 THEN 'HEADER' 
27911                 WHEN 2 THEN 'HEADER' 
27912                 WHEN 3 THEN 'HEADER' 
27913                 WHEN 4 THEN 'HEADER' 
27914                 WHEN 5 THEN 'HEADER' 
27915                 WHEN 6 THEN 'HEADER' 
27916                 WHEN 7 THEN 'HEADER' 
27917                 WHEN 8 THEN 'HEADER' 
27918                 WHEN 9 THEN 'HEADER' 
27919                 WHEN 10 THEN 'HEADER' 
27920                 WHEN 11 THEN 'HEADER' 
27921                 WHEN 12 THEN 'HEADER' 
27922                 WHEN 13 THEN 'HEADER' 
27923                 WHEN 14 THEN 'HEADER' 
27924                 WHEN 15 THEN 'HEADER' 
27925                 WHEN 16 THEN 'HEADER' 
27926                 WHEN 17 THEN 'HEADER' 
27927                 WHEN 18 THEN 'HEADER' 
27928                 WHEN 19 THEN 'HEADER' 
27929                 WHEN 20 THEN 'HEADER' 
27930                 
27931                 ELSE null
27932               END                           object_type_code
27933             , CASE r
27934                 WHEN 1 THEN '707' 
27935                 WHEN 2 THEN '707' 
27936                 WHEN 3 THEN '707' 
27937                 WHEN 4 THEN '707' 
27938                 WHEN 5 THEN '707' 
27939                 WHEN 6 THEN '707' 
27940                 WHEN 7 THEN '201' 
27941                 WHEN 8 THEN '707' 
27942                 WHEN 9 THEN '707' 
27943                 WHEN 10 THEN '707' 
27944                 WHEN 11 THEN '707' 
27945                 WHEN 12 THEN '707' 
27946                 WHEN 13 THEN '707' 
27947                 WHEN 14 THEN '201' 
27948                 WHEN 15 THEN '707' 
27949                 WHEN 16 THEN '707' 
27950                 WHEN 17 THEN '707' 
27951                 WHEN 18 THEN '201' 
27952                 WHEN 19 THEN '201' 
27953                 WHEN 20 THEN '707' 
27954                 
27955                 ELSE null
27956               END                           source_application_id
27957             , 'S'             source_type_code
27958             , CASE r
27959                 WHEN 1 THEN 'TRANSACTION_ID' 
27960                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
27961                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
27962                 WHEN 4 THEN 'TRANSACTION_UOM' 
27963                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
27964                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
27965                 WHEN 7 THEN 'PURCH_ENCUMBRANCE_FLAG' 
27966                 WHEN 8 THEN 'ENCUMBRANCE_REVERSAL_FLAG' 
27967                 WHEN 9 THEN 'APPLIED_TO_APPL_ID' 
27968                 WHEN 10 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
27969                 WHEN 11 THEN 'APPLIED_TO_ENTITY_CODE' 
27970                 WHEN 12 THEN 'TXN_PO_DISTRIBUTION_ID' 
27971                 WHEN 13 THEN 'APPLIED_TO_PO_DOC_ID' 
27972                 WHEN 14 THEN 'PO_BUDGET_ACCOUNT' 
27973                 WHEN 15 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
27974                 WHEN 16 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
27975                 WHEN 17 THEN 'CST_ENCUM_UPG_OPTION' 
27976                 WHEN 18 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
27977                 WHEN 19 THEN 'RESERVED_FLAG' 
27978                 WHEN 20 THEN 'TRANSFER_TO_GL_INDICATOR' 
27979                 
27980                 ELSE null
27981               END                           source_code
27982             , CASE r
27983                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
27984                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
27985                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
27986                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
27987                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
27988                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
27989                 WHEN 7 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_FLAG)
27990                 WHEN 8 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_FLAG)
27991                 WHEN 9 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
27992                 WHEN 10 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
27993                 WHEN 11 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
27994                 WHEN 12 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
27995                 WHEN 13 THEN TO_CHAR(h4.APPLIED_TO_PO_DOC_ID)
27996                 WHEN 14 THEN TO_CHAR(h7.PO_BUDGET_ACCOUNT)
27997                 WHEN 15 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
27998                 WHEN 16 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
27999                 WHEN 17 THEN TO_CHAR(h9.CST_ENCUM_UPG_OPTION)
28000                 WHEN 18 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_TYPE_ID)
28001                 WHEN 19 THEN TO_CHAR(h7.RESERVED_FLAG)
28002                 WHEN 20 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
28003                 
28004                 ELSE null
28005               END                           source_value
28006             , CASE r
28007                 WHEN 6 THEN fvl9.meaning
28008                 WHEN 20 THEN fvl42.meaning
28009                 
28010                 ELSE null
28011               END               source_meaning
28012         FROM xla_events_gt     xet  
28013       , CST_XLA_INV_HEADERS_V  h1
28014       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
28015       , CST_XLA_INV_REF_V  h4
28016       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
28017       , CST_XLA_INV_TXN_TYPES_REF_V  h6
28018       , PO_DISTS_REF_V  h7
28019       , PO_HEADERS_REF_V  h8
28020       , PSA_CST_XLA_UPG_V  h9
28021   , fnd_lookup_values    fvl9
28022   , fnd_lookup_values    fvl42
28023             ,(select rownum r from all_objects where rownum <= 20 and owner = p_apps_owner)
28024        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
28025          AND xet.event_type_code = C_EVENT_TYPE_CODE
28026             AND h1.event_id = xet.event_id
28027  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id  (+) = h1.inventory_item_id  and h5.organization_id  (+) = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h4.txn_po_header_id = h7.po_header_id  (+)  and h4.txn_po_distribution_id = h7.po_distribution_id (+)  AND h4.txn_po_header_id = h8.po_header_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 
28028 'CST_DISTRIBUTION_TYPE'
28029   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
28030   AND fvl9.view_application_id(+) = 700
28031   AND fvl9.language(+)            = USERENV('LANG')
28032      AND fvl42.lookup_type(+)         = 'YES_NO'
28033   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
28034   AND fvl42.view_application_id(+) = 0
28035   AND fvl42.language(+)            = USERENV('LANG')
28036   
28037 )
28038 ;
28039 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28040 
28041       trace
28042          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
28043          ,p_level    => C_LEVEL_STATEMENT
28044          ,p_module   => l_log_module);
28045 
28046 END IF;
28047 --
28048 
28049 
28050 
28051 --
28052 INSERT INTO xla_diag_sources --line1
28053 (
28054         event_id
28055       , ledger_id
28056       , sla_ledger_id
28057       , description_language
28058       , object_name
28059       , object_type_code
28060       , line_number
28061       , source_application_id
28062       , source_type_code
28063       , source_code
28064       , source_value
28065       , source_meaning
28066       , created_by
28067       , creation_date
28068       , last_update_date
28069       , last_updated_by
28070       , last_update_login
28071       , program_update_date
28072       , program_application_id
28073       , program_id
28074       , request_id
28075 )
28076 SELECT  event_id
28077       , p_target_ledger_id
28078       , p_sla_ledger_id
28079       , p_language
28080       , object_name
28081       , object_type_code
28082       , line_number
28083       , source_application_id
28084       , source_type_code
28085       , source_code
28086       , SUBSTR(source_value,1,1996)
28087       , SUBSTR(source_meaning,1,200)
28088       , xla_environment_pkg.g_Usr_Id
28089       , TRUNC(SYSDATE)
28090       , TRUNC(SYSDATE)
28091       , xla_environment_pkg.g_Usr_Id
28092       , xla_environment_pkg.g_Login_Id
28093       , TRUNC(SYSDATE)
28094       , xla_environment_pkg.g_Prog_Appl_Id
28095       , xla_environment_pkg.g_Prog_Id
28096       , xla_environment_pkg.g_Req_Id
28097   FROM (
28098        SELECT xet.event_id                  event_id
28099             , l2.line_number                 line_number
28100             , CASE r
28101                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
28102                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
28103                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
28104                 
28105                ELSE null
28106               END                           object_name
28107             , CASE r
28108                 WHEN 1 THEN 'LINE' 
28109                 WHEN 2 THEN 'LINE' 
28110                 WHEN 3 THEN 'LINE' 
28111                 
28112                 ELSE null
28113               END                           object_type_code
28114             , CASE r
28115                 WHEN 1 THEN '707' 
28116                 WHEN 2 THEN '707' 
28117                 WHEN 3 THEN '707' 
28118                 
28119                 ELSE null
28120               END                           source_application_id
28121             , 'S'             source_type_code
28122             , CASE r
28123                 WHEN 1 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
28124                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
28125                 WHEN 3 THEN 'CURRENCY_CODE' 
28126                 
28127                 ELSE null
28128               END                           source_code
28129             , CASE r
28130                 WHEN 1 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
28131                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
28132                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
28133                 
28134                 ELSE null
28135               END                           source_value
28136             , null              source_meaning
28137          FROM  xla_events_gt     xet  
28138         , CST_XLA_INV_LINES_V  l2
28139             ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
28140         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
28141           AND xet.event_type_code = C_EVENT_TYPE_CODE
28142             AND l2.event_id          = xet.event_id
28143 
28144 )
28145 ;
28146 --
28147 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28148 
28149       trace
28150          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
28151          ,p_level    => C_LEVEL_STATEMENT
28152          ,p_module   => l_log_module);
28153 
28154 END IF;
28155 
28156 
28157 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28158       trace
28159          (p_msg      => 'END of insert_sources_38'
28160          ,p_level    => C_LEVEL_PROCEDURE
28161          ,p_module   => l_log_module);
28162 END IF;
28163 EXCEPTION
28164   WHEN xla_exceptions_pkg.application_exception THEN
28165       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
28166             trace
28167                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
28168                ,p_level    => C_LEVEL_EXCEPTION
28169                ,p_module   => l_log_module);
28170       END IF;
28171       RAISE;
28172   WHEN OTHERS THEN
28173       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
28174             trace
28175                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
28176                ,p_level    => C_LEVEL_EXCEPTION
28177                ,p_module   => l_log_module);
28178        END IF;
28179        xla_exceptions_pkg.raise_message
28180            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_38');
28181 END insert_sources_38;
28182 --
28183 
28184 ---------------------------------------
28185 --
28186 -- PRIVATE FUNCTION
28187 --         EventType_38
28188 --
28189 ----------------------------------------
28190 --
28191 FUNCTION EventType_38
28192        (p_application_id         IN NUMBER
28193        ,p_base_ledger_id         IN NUMBER
28194        ,p_target_ledger_id       IN NUMBER
28195        ,p_language               IN VARCHAR2
28196        ,p_currency_code          IN VARCHAR2
28197        ,p_sla_ledger_id          IN NUMBER
28198        ,p_pad_start_date         IN DATE
28199        ,p_pad_end_date           IN DATE
28200        ,p_primary_ledger_id      IN NUMBER)
28201 RETURN BOOLEAN IS
28202 --
28203 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_PO_DEL_INV';
28204 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
28205 
28206 l_calculate_acctd_flag   VARCHAR2(1) :='N';
28207 l_calculate_g_l_flag     VARCHAR2(1) :='N';
28208 --
28209 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28210 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28211 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
28212 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28213 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28214 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
28215 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
28216 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28217 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28218 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28219 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28220 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28221 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28222 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
28223 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28224 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28225 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28226 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
28227 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28228 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28229 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28230 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
28231 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
28232 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
28233 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
28234 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
28235 
28236 l_event_id                             NUMBER;
28237 l_previous_event_id                    NUMBER;
28238 l_first_event_id                       NUMBER;
28239 l_last_event_id                        NUMBER;
28240 
28241 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
28242 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
28243 --
28244 --
28245 l_result                    BOOLEAN := TRUE;
28246 l_rows                      NUMBER  := 1000;
28247 l_event_type_name           VARCHAR2(80) := 'Logical PO Delivery into Inventory';
28248 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
28249 l_description               VARCHAR2(4000);
28250 l_transaction_reversal      NUMBER;
28251 l_ae_header_id              NUMBER;
28252 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
28253 l_log_module                VARCHAR2(240);
28254 --
28255 l_acct_reversal_source      VARCHAR2(30);
28256 l_trx_reversal_source       VARCHAR2(30);
28257 
28258 l_continue_with_lines       BOOLEAN := TRUE;
28259 --
28260 l_acc_rev_gl_date_source    DATE;                      -- 4262811
28261 --
28262 type t_array_event_id is table of number index by binary_integer;
28263 
28264 l_rec_array_event                    t_rec_array_event;
28265 l_null_rec_array_event               t_rec_array_event;
28266 l_array_ae_header_id                 xla_number_array_type;
28267 l_actual_flag                        VARCHAR2(1) := NULL;
28268 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
28269 l_balance_type_code                  VARCHAR2(1) :=NULL;
28270 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
28271 
28272 --
28273 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
28274 --
28275 
28276 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
28277 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
28278 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
28279 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
28280 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
28281 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
28282 TYPE t_array_source_16 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
28283 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.ENCUMBRANCE_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
28284 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
28285 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
28286 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
28287 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
28288 TYPE t_array_source_23 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
28289 TYPE t_array_source_24 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
28290 TYPE t_array_source_25 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
28291 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
28292 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
28293 TYPE t_array_source_28 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
28294 TYPE t_array_source_31 IS TABLE OF PO_DISTS_REF_V.RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
28295 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
28296 
28297 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
28298 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
28299 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
28300 
28301 l_array_source_1              t_array_source_1;
28302 l_array_source_2              t_array_source_2;
28303 l_array_source_3              t_array_source_3;
28304 l_array_source_4              t_array_source_4;
28305 l_array_source_5              t_array_source_5;
28306 l_array_source_9              t_array_source_9;
28307 l_array_source_9_meaning      t_array_lookup_meaning;
28308 l_array_source_16              t_array_source_16;
28309 l_array_source_17              t_array_source_17;
28310 l_array_source_19              t_array_source_19;
28311 l_array_source_20              t_array_source_20;
28312 l_array_source_21              t_array_source_21;
28313 l_array_source_22              t_array_source_22;
28314 l_array_source_23              t_array_source_23;
28315 l_array_source_24              t_array_source_24;
28316 l_array_source_25              t_array_source_25;
28317 l_array_source_26              t_array_source_26;
28318 l_array_source_27              t_array_source_27;
28319 l_array_source_28              t_array_source_28;
28320 l_array_source_31              t_array_source_31;
28321 l_array_source_42              t_array_source_42;
28322 l_array_source_42_meaning      t_array_lookup_meaning;
28323 
28324 l_array_source_7      t_array_source_7;
28325 l_array_source_8      t_array_source_8;
28326 l_array_source_11      t_array_source_11;
28327 
28328 --
28329 CURSOR header_cur
28330 IS
28331 SELECT /*+ leading(xet) cardinality(xet,1) */
28332 -- Event Type Code: LOG_PO_DEL_INV
28333 -- Event Class Code: PURCHASE_ORDER
28334     xet.entity_id
28335   , xet.legal_entity_id
28336   , xet.entity_code
28337   , xet.transaction_number
28338   , xet.event_id
28339   , xet.event_class_code
28340   , xet.event_type_code
28341   , xet.event_number
28342   , xet.event_date
28343   , xet.transaction_date
28344   , xet.reference_num_1
28345   , xet.reference_num_2
28346   , xet.reference_num_3
28347   , xet.reference_num_4
28348   , xet.reference_char_1
28349   , xet.reference_char_2
28350   , xet.reference_char_3
28351   , xet.reference_char_4
28352   , xet.reference_date_1
28353   , xet.reference_date_2
28354   , xet.reference_date_3
28355   , xet.reference_date_4
28356   , xet.event_created_by
28357   , xet.budgetary_control_flag 
28358   , h1.TRANSACTION_ID    source_1
28359   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
28360   , h4.TRANSACTION_QUANTITY    source_3
28361   , h4.TRANSACTION_UOM    source_4
28362   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
28363   , h1.DISTRIBUTION_TYPE    source_9
28364   , fvl9.meaning   source_9_meaning
28365   , h8.PURCH_ENCUMBRANCE_FLAG    source_16
28366   , h3.ENCUMBRANCE_REVERSAL_FLAG    source_17
28367   , h4.APPLIED_TO_APPL_ID    source_19
28368   , h4.APPLIED_TO_DIST_LINK_TYPE    source_20
28369   , h4.APPLIED_TO_ENTITY_CODE    source_21
28370   , h4.TXN_PO_DISTRIBUTION_ID    source_22
28371   , h4.APPLIED_TO_PO_DOC_ID    source_23
28372   , h7.PO_BUDGET_ACCOUNT    source_24
28373   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_25
28374   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_26
28375   , h9.CST_ENCUM_UPG_OPTION    source_27
28376   , h8.PURCH_ENCUMBRANCE_TYPE_ID    source_28
28377   , h7.RESERVED_FLAG    source_31
28378   , h1.TRANSFER_TO_GL_INDICATOR    source_42
28379   , fvl42.meaning   source_42_meaning
28380   FROM xla_events_gt     xet 
28381   , CST_XLA_INV_HEADERS_V  h1
28382   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
28383   , CST_XLA_INV_REF_V  h4
28384   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
28385   , CST_XLA_INV_TXN_TYPES_REF_V  h6
28386   , PO_DISTS_REF_V  h7
28387   , PO_HEADERS_REF_V  h8
28388   , PSA_CST_XLA_UPG_V  h9
28389   , fnd_lookup_values    fvl9
28390   , fnd_lookup_values    fvl42
28391  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
28392    and xet.event_type_code = C_EVENT_TYPE_CODE
28393    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
28394  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h5.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h4.txn_po_header_id = h7.po_header_id  (+)  AND h4.txn_po_distribution_id = h7.po_distribution_id (+)  AND h4.txn_po_header_id = h8.po_header_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 
28395 'CST_DISTRIBUTION_TYPE'
28396   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
28397   AND fvl9.view_application_id(+) = 700
28398   AND fvl9.language(+)            = USERENV('LANG')
28399      AND fvl42.lookup_type(+)         = 'YES_NO'
28400   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
28401   AND fvl42.view_application_id(+) = 0
28402   AND fvl42.language(+)            = USERENV('LANG')
28403   
28404  ORDER BY event_id
28405 ;
28406 
28407 
28408 --
28409 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
28410 IS
28411 SELECT /*+ leading(xet) cardinality(xet,1) */
28412 -- Event Type Code: LOG_PO_DEL_INV
28413 -- Event Class Code: PURCHASE_ORDER
28414     xet.entity_id
28415    ,xet.legal_entity_id
28416    ,xet.entity_code
28417    ,xet.transaction_number
28418    ,xet.event_id
28419    ,xet.event_class_code
28420    ,xet.event_type_code
28421    ,xet.event_number
28422    ,xet.event_date
28423    ,xet.transaction_date
28424    ,xet.reference_num_1
28425    ,xet.reference_num_2
28426    ,xet.reference_num_3
28427    ,xet.reference_num_4
28428    ,xet.reference_char_1
28429    ,xet.reference_char_2
28430    ,xet.reference_char_3
28431    ,xet.reference_char_4
28432    ,xet.reference_date_1
28433    ,xet.reference_date_2
28434    ,xet.reference_date_3
28435    ,xet.reference_date_4
28436    ,xet.event_created_by
28437    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
28438   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
28439   , l2.DISTRIBUTION_IDENTIFIER    source_8
28440   , l2.CURRENCY_CODE    source_11
28441   FROM xla_events_gt     xet 
28442   , CST_XLA_INV_LINES_V  l2
28443  WHERE xet.event_id between x_first_event_id and x_last_event_id
28444    and xet.event_date between p_pad_start_date and p_pad_end_date
28445    and xet.event_type_code = C_EVENT_TYPE_CODE
28446    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
28447 ;
28448 
28449 --
28450 BEGIN
28451 IF g_log_enabled THEN
28452    l_log_module := C_DEFAULT_MODULE||'.EventType_38';
28453 END IF;
28454 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28455    trace
28456       (p_msg      => 'BEGIN of EventType_38'
28457       ,p_level    => C_LEVEL_PROCEDURE
28458       ,p_module   => l_log_module);
28459 END IF;
28460 
28461 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28462    trace
28463       (p_msg      => 'p_application_id = '||p_application_id||
28464                      ' - p_base_ledger_id = '||p_base_ledger_id||
28465                      ' - p_target_ledger_id  = '||p_target_ledger_id||
28466                      ' - p_language = '||p_language||
28467                      ' - p_currency_code = '||p_currency_code||
28468                      ' - p_sla_ledger_id = '||p_sla_ledger_id
28469       ,p_level    => C_LEVEL_STATEMENT
28470       ,p_module   => l_log_module);
28471 END IF;
28472 --
28473 -- initialze arrays
28474 --
28475 g_array_event.DELETE;
28476 l_rec_array_event := l_null_rec_array_event;
28477 --
28478 --------------------------------------
28479 -- 4262811 Initialze MPA Line Number
28480 --------------------------------------
28481 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
28482 
28483 --
28484 
28485 --
28486 OPEN header_cur;
28487 --
28488 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28489    trace
28490    (p_msg      => 'SQL - FETCH header_cur'
28491    ,p_level    => C_LEVEL_STATEMENT
28492    ,p_module   => l_log_module);
28493 END IF;
28494 --
28495 LOOP
28496 FETCH header_cur BULK COLLECT INTO
28497         l_array_entity_id
28498       , l_array_legal_entity_id
28499       , l_array_entity_code
28500       , l_array_transaction_num
28501       , l_array_event_id
28502       , l_array_class_code
28503       , l_array_event_type
28504       , l_array_event_number
28505       , l_array_event_date
28506       , l_array_transaction_date
28507       , l_array_reference_num_1
28508       , l_array_reference_num_2
28509       , l_array_reference_num_3
28510       , l_array_reference_num_4
28511       , l_array_reference_char_1
28512       , l_array_reference_char_2
28513       , l_array_reference_char_3
28514       , l_array_reference_char_4
28515       , l_array_reference_date_1
28516       , l_array_reference_date_2
28517       , l_array_reference_date_3
28518       , l_array_reference_date_4
28519       , l_array_event_created_by
28520       , l_array_budgetary_control_flag 
28521       , l_array_source_1
28522       , l_array_source_2
28523       , l_array_source_3
28524       , l_array_source_4
28525       , l_array_source_5
28526       , l_array_source_9
28527       , l_array_source_9_meaning
28528       , l_array_source_16
28529       , l_array_source_17
28530       , l_array_source_19
28531       , l_array_source_20
28532       , l_array_source_21
28533       , l_array_source_22
28534       , l_array_source_23
28535       , l_array_source_24
28536       , l_array_source_25
28537       , l_array_source_26
28538       , l_array_source_27
28539       , l_array_source_28
28540       , l_array_source_31
28541       , l_array_source_42
28542       , l_array_source_42_meaning
28543       LIMIT l_rows;
28544 --
28545 IF (C_LEVEL_EVENT >= g_log_level) THEN
28546    trace
28547    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
28548    ,p_level    => C_LEVEL_EVENT
28549    ,p_module   => l_log_module);
28550 END IF;
28551 --
28552 EXIT WHEN l_array_entity_id.COUNT = 0;
28553 
28554 -- initialize arrays
28555 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
28556 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
28557 
28558 --
28559 -- Bug 4458708
28560 --
28561 XLA_AE_LINES_PKG.g_LineNumber := 0;
28562 
28563 
28564 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
28565 g_last_hdr_idx := l_array_event_id.LAST;
28566 --
28567 -- loop for the headers. Each iteration is for each header extract row
28568 -- fetched in header cursor
28569 --
28570 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
28571 
28572 --
28573 -- set event info as cache for other routines to refer event attributes
28574 --
28575 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
28576    (p_application_id           => p_application_id
28577    ,p_primary_ledger_id        => p_primary_ledger_id
28578    ,p_base_ledger_id           => p_base_ledger_id
28579    ,p_target_ledger_id         => p_target_ledger_id
28580    ,p_entity_id                => l_array_entity_id(hdr_idx)
28581    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
28582    ,p_entity_code              => l_array_entity_code(hdr_idx)
28583    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
28584    ,p_event_id                 => l_array_event_id(hdr_idx)
28585    ,p_event_class_code         => l_array_class_code(hdr_idx)
28586    ,p_event_type_code          => l_array_event_type(hdr_idx)
28587    ,p_event_number             => l_array_event_number(hdr_idx)
28588    ,p_event_date               => l_array_event_date(hdr_idx)
28589    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
28590    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
28591    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
28592    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
28593    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
28594    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
28595    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
28596    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
28597    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
28598    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
28599    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
28600    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
28601    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
28602    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
28603    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
28604 
28605 --
28606 -- set the status of entry to C_VALID (0)
28607 --
28608 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
28609 
28610 --
28611 -- initialize a row for ae header
28612 --
28613 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
28614 
28615 l_event_id := l_array_event_id(hdr_idx);
28616 
28617 --
28618 -- storing the hdr_idx for event. May be used by line cursor.
28619 --
28620 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
28621 
28622 --
28623 -- store sources from header extract. This can be improved to
28624 -- store only those sources from header extract that may be used in lines
28625 --
28626 
28627 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
28628 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
28629 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
28630 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
28631 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
28632 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
28633 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
28634 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
28635 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
28636 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
28637 g_array_event(l_event_id).array_value_char('source_20') := l_array_source_20(hdr_idx);
28638 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
28639 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
28640 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
28641 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
28642 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
28643 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
28644 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
28645 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
28646 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
28647 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
28648 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
28649 
28650 --
28651 -- initilaize the status of ae headers for diffrent balance types
28652 -- the status is initialised to C_NOT_CREATED (2)
28653 --
28654 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
28655 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
28656 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
28657 
28658 --
28659 -- call api to validate and store accounting attributes for header
28660 --
28661 
28662 ------------------------------------------------------------
28663 -- Accrual Reversal : to get date for Standard Source (NONE)
28664 ------------------------------------------------------------
28665 l_acc_rev_gl_date_source := NULL;
28666 
28667      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
28668       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_28');
28669      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
28670       l_rec_acct_attrs.array_date_value(2) := 
28671 xla_ae_sources_pkg.GetSystemSourceDate(
28672    p_source_code           => 'XLA_REFERENCE_DATE_1'
28673  , p_source_type_code      => 'Y'
28674  , p_source_application_id =>  602
28675 );
28676      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
28677       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_42');
28678 
28679 
28680 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
28681 
28682 XLA_AE_HEADER_PKG.SetJeCategoryName;
28683 
28684 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
28685 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
28686 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
28687 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
28688 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
28689 
28690 
28691 --
28692 xla_ae_header_pkg.SetHdrDescription(
28693    p_description => Description_1 (
28694    p_application_id => p_application_id 
28695  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
28696  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
28697  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
28698  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
28699  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
28700    )
28701 );
28702 --
28703 
28704 -- No header level analytical criteria
28705 
28706 --
28707 --accounting attribute enhancement, bug 3612931
28708 --
28709 l_trx_reversal_source := SUBSTR(NULL, 1,30);
28710 
28711 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
28712    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
28713 
28714    xla_accounting_err_pkg.build_message
28715       (p_appli_s_name            => 'XLA'
28716       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
28717       ,p_token_1                 => 'ACCT_ATTR_NAME'
28718       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
28719       ,p_token_2                 => 'PRODUCT_NAME'
28720       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
28721       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
28722       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
28723       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
28724 
28725 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
28726    --
28727    -- following sets the accounting attributes needed to reverse
28728    -- accounting for a distributeion
28729    --
28730    xla_ae_lines_pkg.SetTrxReversalAttrs
28731       (p_event_id              => l_event_id
28732       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
28733       ,p_trx_reversal_source   => l_trx_reversal_source);
28734 
28735 END IF;
28736 
28737 
28738 ----------------------------------------------------------------
28739 -- 4262811 -  update the header statuses to invalid in need be
28740 ----------------------------------------------------------------
28741 --
28742 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
28743 
28744 
28745   -----------------------------------------------
28746   -- No accrual reversal for the event class/type
28747   -----------------------------------------------
28748 ----------------------------------------------------------------
28749 
28750 --
28751 -- this ends the header loop iteration for one bulk fetch
28752 --
28753 END LOOP;
28754 
28755 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
28756 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
28757 
28758 --
28759 -- insert dummy rows into lines gt table that were created due to
28760 -- transaction reversals
28761 --
28762 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
28763    l_result := XLA_AE_LINES_PKG.InsertLines;
28764 END IF;
28765 
28766 --
28767 -- reset the temp_line_num for each set of events fetched from header
28768 -- cursor rather than doing it for each new event in line cursor
28769 -- Bug 3939231
28770 --
28771 xla_ae_lines_pkg.g_temp_line_num := 0;
28772 
28773 
28774 
28775 --
28776 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
28777 --
28778 --
28779 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28780 
28781       trace
28782          (p_msg      => 'SQL - FETCH line_cur'
28783          ,p_level    => C_LEVEL_STATEMENT
28784          ,p_module   => l_log_module);
28785 
28786 END IF;
28787 --
28788 --
28789 LOOP
28790   --
28791   FETCH line_cur BULK COLLECT INTO
28792         l_array_entity_id
28793       , l_array_legal_entity_id
28794       , l_array_entity_code
28795       , l_array_transaction_num
28796       , l_array_event_id
28797       , l_array_class_code
28798       , l_array_event_type
28799       , l_array_event_number
28800       , l_array_event_date
28801       , l_array_transaction_date
28802       , l_array_reference_num_1
28803       , l_array_reference_num_2
28804       , l_array_reference_num_3
28805       , l_array_reference_num_4
28806       , l_array_reference_char_1
28807       , l_array_reference_char_2
28808       , l_array_reference_char_3
28809       , l_array_reference_char_4
28810       , l_array_reference_date_1
28811       , l_array_reference_date_2
28812       , l_array_reference_date_3
28813       , l_array_reference_date_4
28814       , l_array_event_created_by
28815       , l_array_budgetary_control_flag
28816       , l_array_extract_line_num 
28817       , l_array_source_7
28818       , l_array_source_8
28819       , l_array_source_11
28820       LIMIT l_rows;
28821 
28822   --
28823   IF (C_LEVEL_EVENT >= g_log_level) THEN
28824             trace
28825                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
28826                ,p_level    => C_LEVEL_EVENT
28827                ,p_module   => l_log_module);
28828   END IF;
28829   --
28830   EXIT WHEN l_array_entity_id.count = 0;
28831 
28832   XLA_AE_LINES_PKG.g_rec_lines := null;
28833 
28834 --
28835 -- Bug 4458708
28836 --
28837 XLA_AE_LINES_PKG.g_LineNumber := 0;
28838 --
28839 --
28840 
28841 FOR Idx IN 1..l_array_event_id.count LOOP
28842    --
28843    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
28844    --
28845    l_event_id := l_array_event_id(idx);  -- 5648433
28846 
28847    --
28848    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
28849    --
28850 
28851    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
28852              (g_array_event(l_event_id).array_value_num('header_index'))
28853          ,'N'
28854          ) <> 'Y'
28855    THEN
28856       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
28857          trace
28858             (p_msg      => 'Trancaction revesal option is not Y '
28859             ,p_level    => C_LEVEL_STATEMENT
28860             ,p_module   => l_log_module);
28861       END IF;
28862 
28863 --
28864 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
28865 --
28866 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
28867 --
28868 -- set event info as cache for other routines to refer event attributes
28869 --
28870 
28871 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
28872    l_previous_event_id := l_event_id;
28873 
28874    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
28875       (p_application_id           => p_application_id
28876       ,p_primary_ledger_id        => p_primary_ledger_id
28877       ,p_base_ledger_id           => p_base_ledger_id
28878       ,p_target_ledger_id         => p_target_ledger_id
28879       ,p_entity_id                => l_array_entity_id(Idx)
28880       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
28881       ,p_entity_code              => l_array_entity_code(Idx)
28882       ,p_transaction_num          => l_array_transaction_num(Idx)
28883       ,p_event_id                 => l_array_event_id(Idx)
28884       ,p_event_class_code         => l_array_class_code(Idx)
28885       ,p_event_type_code          => l_array_event_type(Idx)
28886       ,p_event_number             => l_array_event_number(Idx)
28887       ,p_event_date               => l_array_event_date(Idx)
28888       ,p_transaction_date         => l_array_transaction_date(Idx)
28889       ,p_reference_num_1          => l_array_reference_num_1(Idx)
28890       ,p_reference_num_2          => l_array_reference_num_2(Idx)
28891       ,p_reference_num_3          => l_array_reference_num_3(Idx)
28892       ,p_reference_num_4          => l_array_reference_num_4(Idx)
28893       ,p_reference_char_1         => l_array_reference_char_1(Idx)
28894       ,p_reference_char_2         => l_array_reference_char_2(Idx)
28895       ,p_reference_char_3         => l_array_reference_char_3(Idx)
28896       ,p_reference_char_4         => l_array_reference_char_4(Idx)
28897       ,p_reference_date_1         => l_array_reference_date_1(Idx)
28898       ,p_reference_date_2         => l_array_reference_date_2(Idx)
28899       ,p_reference_date_3         => l_array_reference_date_3(Idx)
28900       ,p_reference_date_4         => l_array_reference_date_4(Idx)
28901       ,p_event_created_by         => l_array_event_created_by(Idx)
28902       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
28903        --
28904 END IF;
28905 
28906 
28907 
28908 --
28909 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
28910 
28911 l_acct_reversal_source := SUBSTR(NULL, 1,30);
28912 
28913 IF l_continue_with_lines THEN
28914    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
28915       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
28916 
28917       xla_accounting_err_pkg.build_message
28918          (p_appli_s_name            => 'XLA'
28919          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
28920          ,p_token_1                 => 'LINE_NUMBER'
28921          ,p_value_1                 => l_array_extract_line_num(Idx)
28922          ,p_token_2                 => 'PRODUCT_NAME'
28923          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
28924          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
28925          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
28926          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
28927 
28928    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
28929       --
28930       -- following sets the accounting attributes needed to reverse
28931       -- accounting for a distributeion
28932       --
28933 
28934       --
28935       -- 5217187
28936       --
28937       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
28938       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
28939                                        g_array_event(l_event_id).array_value_num('header_index'));
28940       --
28941       --
28942 
28943       -- No reversal code generated
28944 
28945       xla_ae_lines_pkg.SetAcctReversalAttrs
28946          (p_event_id             => l_event_id
28947          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
28948          ,p_calculate_acctd_flag => l_calculate_acctd_flag
28949          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
28950    END IF;
28951 
28952    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
28953        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
28954 
28955 --
28956 AcctLineType_7 (
28957  p_application_id  => p_application_id
28958  ,p_event_id     => l_event_id
28959  ,p_calculate_acctd_flag => l_calculate_acctd_flag
28960  ,p_calculate_g_l_flag => l_calculate_g_l_flag
28961  ,p_actual_flag => l_actual_flag
28962  ,p_balance_type_code => l_balance_type_code
28963  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
28964  
28965  , p_source_8 => l_array_source_8(Idx)
28966  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
28967  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
28968  , p_source_11 => l_array_source_11(Idx)
28969  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
28970  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
28971  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
28972  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
28973  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
28974  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
28975  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
28976  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
28977  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
28978  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
28979  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
28980  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
28981  );
28982 If(l_balance_type_code = 'A') THEN
28983   l_actual_gain_loss_ref := l_gain_or_loss_ref;
28984 END IF;
28985 
28986 --
28987 
28988 
28989 --
28990 AcctLineType_16 (
28991  p_application_id  => p_application_id
28992  ,p_event_id     => l_event_id
28993  ,p_calculate_acctd_flag => l_calculate_acctd_flag
28994  ,p_calculate_g_l_flag => l_calculate_g_l_flag
28995  ,p_actual_flag => l_actual_flag
28996  ,p_balance_type_code => l_balance_type_code
28997  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
28998  
28999  , p_source_7 => l_array_source_7(Idx)
29000  , p_source_8 => l_array_source_8(Idx)
29001  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
29002  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
29003  , p_source_11 => l_array_source_11(Idx)
29004  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
29005  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
29006  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
29007  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
29008  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
29009  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
29010  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
29011  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
29012  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
29013  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
29014  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
29015  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
29016  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
29017  );
29018 If(l_balance_type_code = 'A') THEN
29019   l_actual_gain_loss_ref := l_gain_or_loss_ref;
29020 END IF;
29021 
29022 --
29023 
29024       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
29025       -- or secondary ledger that has different currency with primary
29026       -- or alc that is calculated by sla
29027       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
29028             (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'))
29029 
29030 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
29031 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
29032           AND (l_actual_flag = 'A')) THEN
29033         XLA_AE_LINES_PKG.CreateGainOrLossLines(
29034           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
29035          ,p_application_id   => p_application_id
29036          ,p_amb_context_code => 'DEFAULT'
29037          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
29038          ,p_event_class_code => C_EVENT_CLASS_CODE
29039          ,p_event_type_code  => C_EVENT_TYPE_CODE
29040          
29041          ,p_gain_ccid        => -1
29042          ,p_loss_ccid        => -1
29043 
29044          ,p_actual_flag      => l_actual_flag
29045          ,p_enc_flag         => null
29046          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
29047          ,p_enc_g_l_ref      => null
29048          );
29049       END IF;
29050    END IF;
29051 END IF;
29052 
29053    ELSE
29054       --
29055       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
29056       --
29057       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29058          trace
29059             (p_msg      => 'Trancaction revesal option is Y'
29060             ,p_level    => C_LEVEL_STATEMENT
29061             ,p_module   => l_log_module);
29062       END IF;
29063    END IF;
29064 
29065 END LOOP;
29066 l_result := XLA_AE_LINES_PKG.InsertLines ;
29067 end loop;
29068 close line_cur;
29069 
29070 
29071 --
29072 -- insert headers into xla_ae_headers_gt table
29073 --
29074 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
29075 
29076 -- insert into errors table here.
29077 
29078 END LOOP;
29079 
29080 --
29081 -- 4865292
29082 --
29083 -- Compare g_hdr_extract_count with event count in
29084 -- CreateHeadersAndLines.
29085 --
29086 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
29087 
29088 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29089    trace (p_msg     => '# rows extracted from header extract objects '
29090                     || ' (running total): '
29091                     || g_hdr_extract_count
29092          ,p_level   => C_LEVEL_STATEMENT
29093          ,p_module  => l_log_module);
29094 END IF;
29095 
29096 CLOSE header_cur;
29097 --
29098 
29099 --
29100 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29101    trace
29102       (p_msg      => 'END of EventType_38'
29103       ,p_level    => C_LEVEL_PROCEDURE
29104       ,p_module   => l_log_module);
29105 END IF;
29106 --
29107 RETURN l_result;
29108 EXCEPTION
29109 WHEN xla_exceptions_pkg.application_exception THEN
29110    
29111 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
29112 
29113    
29114 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
29115 
29116    RAISE;
29117 
29118 WHEN NO_DATA_FOUND THEN
29119 
29120 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
29121 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
29122 
29123 FOR header_record IN header_cur
29124 LOOP
29125     l_array_header_events(header_record.event_id) := header_record.event_id;
29126 END LOOP;
29127 
29128 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
29129 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
29130 
29131 fnd_file.put_line(fnd_file.LOG, '                    ');
29132 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
29133 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
29134 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
29135 
29136 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
29137 LOOP
29138 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
29139 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
29140         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
29141 	END IF;
29142 END LOOP;
29143 
29144 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
29145 fnd_file.put_line(fnd_file.LOG, '                    ');
29146 
29147 
29148 xla_exceptions_pkg.raise_message
29149       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_38');
29150 
29151 
29152 WHEN OTHERS THEN
29153    xla_exceptions_pkg.raise_message
29154       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_38');
29155 END EventType_38;
29156 --
29157 
29158 ---------------------------------------
29159 --
29160 -- PRIVATE PROCEDURE
29161 --         insert_sources_39
29162 --
29163 ----------------------------------------
29164 --
29165 PROCEDURE insert_sources_39(
29166                                 p_target_ledger_id       IN NUMBER
29167                               , p_language               IN VARCHAR2
29168                               , p_sla_ledger_id          IN NUMBER
29169                               , p_pad_start_date         IN DATE
29170                               , p_pad_end_date           IN DATE
29171                          )
29172 IS
29173 
29174 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_RET_RI_INV';
29175 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
29176 p_apps_owner                   VARCHAR2(30);
29177 l_log_module                   VARCHAR2(240);
29178 BEGIN
29179 IF g_log_enabled THEN
29180       l_log_module := C_DEFAULT_MODULE||'.insert_sources_39';
29181 END IF;
29182 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29183 
29184       trace
29185          (p_msg      => 'BEGIN of insert_sources_39'
29186          ,p_level    => C_LEVEL_PROCEDURE
29187          ,p_module   => l_log_module);
29188 
29189 END IF;
29190 
29191 -- select APPS owner
29192 SELECT oracle_username
29193   INTO p_apps_owner
29194   FROM fnd_oracle_userid
29195  WHERE read_only_flag = 'U'
29196 ;
29197 
29198 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29199       trace
29200          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
29201                         ' - p_language = '||p_language||
29202                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
29203                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
29204                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
29205                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
29206          ,p_level    => C_LEVEL_STATEMENT
29207          ,p_module   => l_log_module);
29208 END IF;
29209 
29210 
29211 --
29212 INSERT INTO xla_diag_sources --hdr1
29213 (
29214         event_id
29215       , ledger_id
29216       , sla_ledger_id
29217       , description_language
29218       , object_name
29219       , object_type_code
29220       , line_number
29221       , source_application_id
29222       , source_type_code
29223       , source_code
29224       , source_value
29225       , source_meaning
29226       , created_by
29227       , creation_date
29228       , last_update_date
29229       , last_updated_by
29230       , last_update_login
29231       , program_update_date
29232       , program_application_id
29233       , program_id
29234       , request_id
29235 )
29236 SELECT
29237         event_id
29238       , p_target_ledger_id
29239       , p_sla_ledger_id
29240       , p_language
29241       , object_name
29242       , object_type_code
29243       , line_number
29244       , source_application_id
29245       , source_type_code
29246       , source_code
29247       , SUBSTR(source_value ,1,1996)
29248       , SUBSTR(source_meaning,1,200)
29249       , xla_environment_pkg.g_Usr_Id
29250       , TRUNC(SYSDATE)
29251       , TRUNC(SYSDATE)
29252       , xla_environment_pkg.g_Usr_Id
29253       , xla_environment_pkg.g_Login_Id
29254       , TRUNC(SYSDATE)
29255       , xla_environment_pkg.g_Prog_Appl_Id
29256       , xla_environment_pkg.g_Prog_Id
29257       , xla_environment_pkg.g_Req_Id
29258   FROM (
29259        SELECT xet.event_id                  event_id
29260             , 0                             line_number
29261             , CASE r
29262                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
29263                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
29264                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
29265                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
29266                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
29267                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
29268                 WHEN 7 THEN 'PO_HEADERS_REF_V' 
29269                 WHEN 8 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
29270                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
29271                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
29272                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
29273                 WHEN 12 THEN 'CST_XLA_INV_REF_V' 
29274                 WHEN 13 THEN 'CST_XLA_INV_REF_V' 
29275                 WHEN 14 THEN 'PO_DISTS_REF_V' 
29276                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
29277                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
29278                 WHEN 17 THEN 'PSA_CST_XLA_UPG_V' 
29279                 WHEN 18 THEN 'PO_HEADERS_REF_V' 
29280                 WHEN 19 THEN 'PO_DISTS_REF_V' 
29281                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
29282                 
29283                ELSE null
29284               END                           object_name
29285             , CASE r
29286                 WHEN 1 THEN 'HEADER' 
29287                 WHEN 2 THEN 'HEADER' 
29288                 WHEN 3 THEN 'HEADER' 
29289                 WHEN 4 THEN 'HEADER' 
29290                 WHEN 5 THEN 'HEADER' 
29291                 WHEN 6 THEN 'HEADER' 
29292                 WHEN 7 THEN 'HEADER' 
29293                 WHEN 8 THEN 'HEADER' 
29294                 WHEN 9 THEN 'HEADER' 
29295                 WHEN 10 THEN 'HEADER' 
29296                 WHEN 11 THEN 'HEADER' 
29297                 WHEN 12 THEN 'HEADER' 
29298                 WHEN 13 THEN 'HEADER' 
29299                 WHEN 14 THEN 'HEADER' 
29300                 WHEN 15 THEN 'HEADER' 
29301                 WHEN 16 THEN 'HEADER' 
29302                 WHEN 17 THEN 'HEADER' 
29303                 WHEN 18 THEN 'HEADER' 
29304                 WHEN 19 THEN 'HEADER' 
29305                 WHEN 20 THEN 'HEADER' 
29306                 
29307                 ELSE null
29308               END                           object_type_code
29309             , CASE r
29310                 WHEN 1 THEN '707' 
29311                 WHEN 2 THEN '707' 
29312                 WHEN 3 THEN '707' 
29313                 WHEN 4 THEN '707' 
29314                 WHEN 5 THEN '707' 
29315                 WHEN 6 THEN '707' 
29316                 WHEN 7 THEN '201' 
29317                 WHEN 8 THEN '707' 
29318                 WHEN 9 THEN '707' 
29319                 WHEN 10 THEN '707' 
29320                 WHEN 11 THEN '707' 
29321                 WHEN 12 THEN '707' 
29322                 WHEN 13 THEN '707' 
29323                 WHEN 14 THEN '201' 
29324                 WHEN 15 THEN '707' 
29325                 WHEN 16 THEN '707' 
29326                 WHEN 17 THEN '707' 
29327                 WHEN 18 THEN '201' 
29328                 WHEN 19 THEN '201' 
29329                 WHEN 20 THEN '707' 
29330                 
29331                 ELSE null
29332               END                           source_application_id
29333             , 'S'             source_type_code
29334             , CASE r
29335                 WHEN 1 THEN 'TRANSACTION_ID' 
29336                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
29337                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
29338                 WHEN 4 THEN 'TRANSACTION_UOM' 
29339                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
29340                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
29341                 WHEN 7 THEN 'PURCH_ENCUMBRANCE_FLAG' 
29342                 WHEN 8 THEN 'ENCUMBRANCE_REVERSAL_FLAG' 
29343                 WHEN 9 THEN 'APPLIED_TO_APPL_ID' 
29344                 WHEN 10 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
29345                 WHEN 11 THEN 'APPLIED_TO_ENTITY_CODE' 
29346                 WHEN 12 THEN 'TXN_PO_DISTRIBUTION_ID' 
29347                 WHEN 13 THEN 'APPLIED_TO_PO_DOC_ID' 
29348                 WHEN 14 THEN 'PO_BUDGET_ACCOUNT' 
29349                 WHEN 15 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
29350                 WHEN 16 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
29351                 WHEN 17 THEN 'CST_ENCUM_UPG_OPTION' 
29352                 WHEN 18 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
29353                 WHEN 19 THEN 'RESERVED_FLAG' 
29354                 WHEN 20 THEN 'TRANSFER_TO_GL_INDICATOR' 
29355                 
29356                 ELSE null
29357               END                           source_code
29358             , CASE r
29359                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
29360                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
29361                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
29362                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
29363                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
29364                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
29365                 WHEN 7 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_FLAG)
29366                 WHEN 8 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_FLAG)
29367                 WHEN 9 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
29368                 WHEN 10 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
29369                 WHEN 11 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
29370                 WHEN 12 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
29371                 WHEN 13 THEN TO_CHAR(h4.APPLIED_TO_PO_DOC_ID)
29372                 WHEN 14 THEN TO_CHAR(h7.PO_BUDGET_ACCOUNT)
29373                 WHEN 15 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
29374                 WHEN 16 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
29375                 WHEN 17 THEN TO_CHAR(h9.CST_ENCUM_UPG_OPTION)
29376                 WHEN 18 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_TYPE_ID)
29377                 WHEN 19 THEN TO_CHAR(h7.RESERVED_FLAG)
29378                 WHEN 20 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
29379                 
29380                 ELSE null
29381               END                           source_value
29382             , CASE r
29383                 WHEN 6 THEN fvl9.meaning
29384                 WHEN 20 THEN fvl42.meaning
29385                 
29386                 ELSE null
29387               END               source_meaning
29388         FROM xla_events_gt     xet  
29389       , CST_XLA_INV_HEADERS_V  h1
29390       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
29391       , CST_XLA_INV_REF_V  h4
29392       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
29393       , CST_XLA_INV_TXN_TYPES_REF_V  h6
29394       , PO_DISTS_REF_V  h7
29395       , PO_HEADERS_REF_V  h8
29396       , PSA_CST_XLA_UPG_V  h9
29397   , fnd_lookup_values    fvl9
29398   , fnd_lookup_values    fvl42
29399             ,(select rownum r from all_objects where rownum <= 20 and owner = p_apps_owner)
29400        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
29401          AND xet.event_type_code = C_EVENT_TYPE_CODE
29402             AND h1.event_id = xet.event_id
29403  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id  (+) = h1.inventory_item_id  and h5.organization_id  (+) = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h4.txn_po_header_id = h7.po_header_id  (+)  and h4.txn_po_distribution_id = h7.po_distribution_id (+)  AND h4.txn_po_header_id = h8.po_header_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 
29404 'CST_DISTRIBUTION_TYPE'
29405   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
29406   AND fvl9.view_application_id(+) = 700
29407   AND fvl9.language(+)            = USERENV('LANG')
29408      AND fvl42.lookup_type(+)         = 'YES_NO'
29409   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
29410   AND fvl42.view_application_id(+) = 0
29411   AND fvl42.language(+)            = USERENV('LANG')
29412   
29413 )
29414 ;
29415 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29416 
29417       trace
29418          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
29419          ,p_level    => C_LEVEL_STATEMENT
29420          ,p_module   => l_log_module);
29421 
29422 END IF;
29423 --
29424 
29425 
29426 
29427 --
29428 INSERT INTO xla_diag_sources --line1
29429 (
29430         event_id
29431       , ledger_id
29432       , sla_ledger_id
29433       , description_language
29434       , object_name
29435       , object_type_code
29436       , line_number
29437       , source_application_id
29438       , source_type_code
29439       , source_code
29440       , source_value
29441       , source_meaning
29442       , created_by
29443       , creation_date
29444       , last_update_date
29445       , last_updated_by
29446       , last_update_login
29447       , program_update_date
29448       , program_application_id
29449       , program_id
29450       , request_id
29451 )
29452 SELECT  event_id
29453       , p_target_ledger_id
29454       , p_sla_ledger_id
29455       , p_language
29456       , object_name
29457       , object_type_code
29458       , line_number
29459       , source_application_id
29460       , source_type_code
29461       , source_code
29462       , SUBSTR(source_value,1,1996)
29463       , SUBSTR(source_meaning,1,200)
29464       , xla_environment_pkg.g_Usr_Id
29465       , TRUNC(SYSDATE)
29466       , TRUNC(SYSDATE)
29467       , xla_environment_pkg.g_Usr_Id
29468       , xla_environment_pkg.g_Login_Id
29469       , TRUNC(SYSDATE)
29470       , xla_environment_pkg.g_Prog_Appl_Id
29471       , xla_environment_pkg.g_Prog_Id
29472       , xla_environment_pkg.g_Req_Id
29473   FROM (
29474        SELECT xet.event_id                  event_id
29475             , l2.line_number                 line_number
29476             , CASE r
29477                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
29478                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
29479                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
29480                 
29481                ELSE null
29482               END                           object_name
29483             , CASE r
29484                 WHEN 1 THEN 'LINE' 
29485                 WHEN 2 THEN 'LINE' 
29486                 WHEN 3 THEN 'LINE' 
29487                 
29488                 ELSE null
29489               END                           object_type_code
29490             , CASE r
29491                 WHEN 1 THEN '707' 
29492                 WHEN 2 THEN '707' 
29493                 WHEN 3 THEN '707' 
29494                 
29495                 ELSE null
29496               END                           source_application_id
29497             , 'S'             source_type_code
29498             , CASE r
29499                 WHEN 1 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
29500                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
29501                 WHEN 3 THEN 'CURRENCY_CODE' 
29502                 
29503                 ELSE null
29504               END                           source_code
29505             , CASE r
29506                 WHEN 1 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
29507                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
29508                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
29509                 
29510                 ELSE null
29511               END                           source_value
29512             , null              source_meaning
29513          FROM  xla_events_gt     xet  
29514         , CST_XLA_INV_LINES_V  l2
29515             ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
29516         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
29517           AND xet.event_type_code = C_EVENT_TYPE_CODE
29518             AND l2.event_id          = xet.event_id
29519 
29520 )
29521 ;
29522 --
29523 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29524 
29525       trace
29526          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
29527          ,p_level    => C_LEVEL_STATEMENT
29528          ,p_module   => l_log_module);
29529 
29530 END IF;
29531 
29532 
29533 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29534       trace
29535          (p_msg      => 'END of insert_sources_39'
29536          ,p_level    => C_LEVEL_PROCEDURE
29537          ,p_module   => l_log_module);
29538 END IF;
29539 EXCEPTION
29540   WHEN xla_exceptions_pkg.application_exception THEN
29541       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
29542             trace
29543                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
29544                ,p_level    => C_LEVEL_EXCEPTION
29545                ,p_module   => l_log_module);
29546       END IF;
29547       RAISE;
29548   WHEN OTHERS THEN
29549       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
29550             trace
29551                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
29552                ,p_level    => C_LEVEL_EXCEPTION
29553                ,p_module   => l_log_module);
29554        END IF;
29555        xla_exceptions_pkg.raise_message
29556            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_39');
29557 END insert_sources_39;
29558 --
29559 
29560 ---------------------------------------
29561 --
29562 -- PRIVATE FUNCTION
29563 --         EventType_39
29564 --
29565 ----------------------------------------
29566 --
29567 FUNCTION EventType_39
29568        (p_application_id         IN NUMBER
29569        ,p_base_ledger_id         IN NUMBER
29570        ,p_target_ledger_id       IN NUMBER
29571        ,p_language               IN VARCHAR2
29572        ,p_currency_code          IN VARCHAR2
29573        ,p_sla_ledger_id          IN NUMBER
29574        ,p_pad_start_date         IN DATE
29575        ,p_pad_end_date           IN DATE
29576        ,p_primary_ledger_id      IN NUMBER)
29577 RETURN BOOLEAN IS
29578 --
29579 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LOG_RET_RI_INV';
29580 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
29581 
29582 l_calculate_acctd_flag   VARCHAR2(1) :='N';
29583 l_calculate_g_l_flag     VARCHAR2(1) :='N';
29584 --
29585 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29586 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29587 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
29588 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29589 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29590 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
29591 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
29592 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29593 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29594 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29595 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29596 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29597 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29598 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
29599 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29600 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29601 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29602 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
29603 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29604 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29605 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29606 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
29607 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
29608 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
29609 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
29610 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
29611 
29612 l_event_id                             NUMBER;
29613 l_previous_event_id                    NUMBER;
29614 l_first_event_id                       NUMBER;
29615 l_last_event_id                        NUMBER;
29616 
29617 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
29618 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
29619 --
29620 --
29621 l_result                    BOOLEAN := TRUE;
29622 l_rows                      NUMBER  := 1000;
29623 l_event_type_name           VARCHAR2(80) := 'Logical Return to Receiving Inspection from Inventory';
29624 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
29625 l_description               VARCHAR2(4000);
29626 l_transaction_reversal      NUMBER;
29627 l_ae_header_id              NUMBER;
29628 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
29629 l_log_module                VARCHAR2(240);
29630 --
29631 l_acct_reversal_source      VARCHAR2(30);
29632 l_trx_reversal_source       VARCHAR2(30);
29633 
29634 l_continue_with_lines       BOOLEAN := TRUE;
29635 --
29636 l_acc_rev_gl_date_source    DATE;                      -- 4262811
29637 --
29638 type t_array_event_id is table of number index by binary_integer;
29639 
29640 l_rec_array_event                    t_rec_array_event;
29641 l_null_rec_array_event               t_rec_array_event;
29642 l_array_ae_header_id                 xla_number_array_type;
29643 l_actual_flag                        VARCHAR2(1) := NULL;
29644 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
29645 l_balance_type_code                  VARCHAR2(1) :=NULL;
29646 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
29647 
29648 --
29649 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
29650 --
29651 
29652 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
29653 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
29654 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
29655 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
29656 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
29657 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
29658 TYPE t_array_source_16 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
29659 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.ENCUMBRANCE_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
29660 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
29661 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
29662 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
29663 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
29664 TYPE t_array_source_23 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
29665 TYPE t_array_source_24 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
29666 TYPE t_array_source_25 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
29667 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
29668 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
29669 TYPE t_array_source_28 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
29670 TYPE t_array_source_31 IS TABLE OF PO_DISTS_REF_V.RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
29671 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
29672 
29673 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
29674 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
29675 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
29676 
29677 l_array_source_1              t_array_source_1;
29678 l_array_source_2              t_array_source_2;
29679 l_array_source_3              t_array_source_3;
29680 l_array_source_4              t_array_source_4;
29681 l_array_source_5              t_array_source_5;
29682 l_array_source_9              t_array_source_9;
29683 l_array_source_9_meaning      t_array_lookup_meaning;
29684 l_array_source_16              t_array_source_16;
29685 l_array_source_17              t_array_source_17;
29686 l_array_source_19              t_array_source_19;
29687 l_array_source_20              t_array_source_20;
29688 l_array_source_21              t_array_source_21;
29689 l_array_source_22              t_array_source_22;
29690 l_array_source_23              t_array_source_23;
29691 l_array_source_24              t_array_source_24;
29692 l_array_source_25              t_array_source_25;
29693 l_array_source_26              t_array_source_26;
29694 l_array_source_27              t_array_source_27;
29695 l_array_source_28              t_array_source_28;
29696 l_array_source_31              t_array_source_31;
29697 l_array_source_42              t_array_source_42;
29698 l_array_source_42_meaning      t_array_lookup_meaning;
29699 
29700 l_array_source_7      t_array_source_7;
29701 l_array_source_8      t_array_source_8;
29702 l_array_source_11      t_array_source_11;
29703 
29704 --
29705 CURSOR header_cur
29706 IS
29707 SELECT /*+ leading(xet) cardinality(xet,1) */
29708 -- Event Type Code: LOG_RET_RI_INV
29709 -- Event Class Code: PURCHASE_ORDER
29710     xet.entity_id
29711   , xet.legal_entity_id
29712   , xet.entity_code
29713   , xet.transaction_number
29714   , xet.event_id
29715   , xet.event_class_code
29716   , xet.event_type_code
29717   , xet.event_number
29718   , xet.event_date
29719   , xet.transaction_date
29720   , xet.reference_num_1
29721   , xet.reference_num_2
29722   , xet.reference_num_3
29723   , xet.reference_num_4
29724   , xet.reference_char_1
29725   , xet.reference_char_2
29726   , xet.reference_char_3
29727   , xet.reference_char_4
29728   , xet.reference_date_1
29729   , xet.reference_date_2
29730   , xet.reference_date_3
29731   , xet.reference_date_4
29732   , xet.event_created_by
29733   , xet.budgetary_control_flag 
29734   , h1.TRANSACTION_ID    source_1
29735   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
29736   , h4.TRANSACTION_QUANTITY    source_3
29737   , h4.TRANSACTION_UOM    source_4
29738   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
29739   , h1.DISTRIBUTION_TYPE    source_9
29740   , fvl9.meaning   source_9_meaning
29741   , h8.PURCH_ENCUMBRANCE_FLAG    source_16
29742   , h3.ENCUMBRANCE_REVERSAL_FLAG    source_17
29743   , h4.APPLIED_TO_APPL_ID    source_19
29744   , h4.APPLIED_TO_DIST_LINK_TYPE    source_20
29745   , h4.APPLIED_TO_ENTITY_CODE    source_21
29746   , h4.TXN_PO_DISTRIBUTION_ID    source_22
29747   , h4.APPLIED_TO_PO_DOC_ID    source_23
29748   , h7.PO_BUDGET_ACCOUNT    source_24
29749   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_25
29750   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_26
29751   , h9.CST_ENCUM_UPG_OPTION    source_27
29752   , h8.PURCH_ENCUMBRANCE_TYPE_ID    source_28
29753   , h7.RESERVED_FLAG    source_31
29754   , h1.TRANSFER_TO_GL_INDICATOR    source_42
29755   , fvl42.meaning   source_42_meaning
29756   FROM xla_events_gt     xet 
29757   , CST_XLA_INV_HEADERS_V  h1
29758   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
29759   , CST_XLA_INV_REF_V  h4
29760   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
29761   , CST_XLA_INV_TXN_TYPES_REF_V  h6
29762   , PO_DISTS_REF_V  h7
29763   , PO_HEADERS_REF_V  h8
29764   , PSA_CST_XLA_UPG_V  h9
29765   , fnd_lookup_values    fvl9
29766   , fnd_lookup_values    fvl42
29767  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
29768    and xet.event_type_code = C_EVENT_TYPE_CODE
29769    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
29770  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h5.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h4.txn_po_header_id = h7.po_header_id  (+)  AND h4.txn_po_distribution_id = h7.po_distribution_id (+)  AND h4.txn_po_header_id = h8.po_header_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 
29771 'CST_DISTRIBUTION_TYPE'
29772   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
29773   AND fvl9.view_application_id(+) = 700
29774   AND fvl9.language(+)            = USERENV('LANG')
29775      AND fvl42.lookup_type(+)         = 'YES_NO'
29776   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
29777   AND fvl42.view_application_id(+) = 0
29778   AND fvl42.language(+)            = USERENV('LANG')
29779   
29780  ORDER BY event_id
29781 ;
29782 
29783 
29784 --
29785 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
29786 IS
29787 SELECT /*+ leading(xet) cardinality(xet,1) */
29788 -- Event Type Code: LOG_RET_RI_INV
29789 -- Event Class Code: PURCHASE_ORDER
29790     xet.entity_id
29791    ,xet.legal_entity_id
29792    ,xet.entity_code
29793    ,xet.transaction_number
29794    ,xet.event_id
29795    ,xet.event_class_code
29796    ,xet.event_type_code
29797    ,xet.event_number
29798    ,xet.event_date
29799    ,xet.transaction_date
29800    ,xet.reference_num_1
29801    ,xet.reference_num_2
29802    ,xet.reference_num_3
29803    ,xet.reference_num_4
29804    ,xet.reference_char_1
29805    ,xet.reference_char_2
29806    ,xet.reference_char_3
29807    ,xet.reference_char_4
29808    ,xet.reference_date_1
29809    ,xet.reference_date_2
29810    ,xet.reference_date_3
29811    ,xet.reference_date_4
29812    ,xet.event_created_by
29813    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
29814   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
29815   , l2.DISTRIBUTION_IDENTIFIER    source_8
29816   , l2.CURRENCY_CODE    source_11
29817   FROM xla_events_gt     xet 
29818   , CST_XLA_INV_LINES_V  l2
29819  WHERE xet.event_id between x_first_event_id and x_last_event_id
29820    and xet.event_date between p_pad_start_date and p_pad_end_date
29821    and xet.event_type_code = C_EVENT_TYPE_CODE
29822    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
29823 ;
29824 
29825 --
29826 BEGIN
29827 IF g_log_enabled THEN
29828    l_log_module := C_DEFAULT_MODULE||'.EventType_39';
29829 END IF;
29830 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29831    trace
29832       (p_msg      => 'BEGIN of EventType_39'
29833       ,p_level    => C_LEVEL_PROCEDURE
29834       ,p_module   => l_log_module);
29835 END IF;
29836 
29837 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29838    trace
29839       (p_msg      => 'p_application_id = '||p_application_id||
29840                      ' - p_base_ledger_id = '||p_base_ledger_id||
29841                      ' - p_target_ledger_id  = '||p_target_ledger_id||
29842                      ' - p_language = '||p_language||
29843                      ' - p_currency_code = '||p_currency_code||
29844                      ' - p_sla_ledger_id = '||p_sla_ledger_id
29845       ,p_level    => C_LEVEL_STATEMENT
29846       ,p_module   => l_log_module);
29847 END IF;
29848 --
29849 -- initialze arrays
29850 --
29851 g_array_event.DELETE;
29852 l_rec_array_event := l_null_rec_array_event;
29853 --
29854 --------------------------------------
29855 -- 4262811 Initialze MPA Line Number
29856 --------------------------------------
29857 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
29858 
29859 --
29860 
29861 --
29862 OPEN header_cur;
29863 --
29864 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
29865    trace
29866    (p_msg      => 'SQL - FETCH header_cur'
29867    ,p_level    => C_LEVEL_STATEMENT
29868    ,p_module   => l_log_module);
29869 END IF;
29870 --
29871 LOOP
29872 FETCH header_cur BULK COLLECT INTO
29873         l_array_entity_id
29874       , l_array_legal_entity_id
29875       , l_array_entity_code
29876       , l_array_transaction_num
29877       , l_array_event_id
29878       , l_array_class_code
29879       , l_array_event_type
29880       , l_array_event_number
29881       , l_array_event_date
29882       , l_array_transaction_date
29883       , l_array_reference_num_1
29884       , l_array_reference_num_2
29885       , l_array_reference_num_3
29886       , l_array_reference_num_4
29887       , l_array_reference_char_1
29888       , l_array_reference_char_2
29889       , l_array_reference_char_3
29890       , l_array_reference_char_4
29891       , l_array_reference_date_1
29892       , l_array_reference_date_2
29893       , l_array_reference_date_3
29894       , l_array_reference_date_4
29895       , l_array_event_created_by
29896       , l_array_budgetary_control_flag 
29897       , l_array_source_1
29898       , l_array_source_2
29899       , l_array_source_3
29900       , l_array_source_4
29901       , l_array_source_5
29902       , l_array_source_9
29903       , l_array_source_9_meaning
29904       , l_array_source_16
29905       , l_array_source_17
29906       , l_array_source_19
29907       , l_array_source_20
29908       , l_array_source_21
29909       , l_array_source_22
29910       , l_array_source_23
29911       , l_array_source_24
29912       , l_array_source_25
29913       , l_array_source_26
29914       , l_array_source_27
29915       , l_array_source_28
29916       , l_array_source_31
29917       , l_array_source_42
29918       , l_array_source_42_meaning
29919       LIMIT l_rows;
29920 --
29921 IF (C_LEVEL_EVENT >= g_log_level) THEN
29922    trace
29923    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
29924    ,p_level    => C_LEVEL_EVENT
29925    ,p_module   => l_log_module);
29926 END IF;
29927 --
29928 EXIT WHEN l_array_entity_id.COUNT = 0;
29929 
29930 -- initialize arrays
29931 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
29932 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
29933 
29934 --
29935 -- Bug 4458708
29936 --
29937 XLA_AE_LINES_PKG.g_LineNumber := 0;
29938 
29939 
29940 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
29941 g_last_hdr_idx := l_array_event_id.LAST;
29942 --
29943 -- loop for the headers. Each iteration is for each header extract row
29944 -- fetched in header cursor
29945 --
29946 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
29947 
29948 --
29949 -- set event info as cache for other routines to refer event attributes
29950 --
29951 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
29952    (p_application_id           => p_application_id
29953    ,p_primary_ledger_id        => p_primary_ledger_id
29954    ,p_base_ledger_id           => p_base_ledger_id
29955    ,p_target_ledger_id         => p_target_ledger_id
29956    ,p_entity_id                => l_array_entity_id(hdr_idx)
29957    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
29958    ,p_entity_code              => l_array_entity_code(hdr_idx)
29959    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
29960    ,p_event_id                 => l_array_event_id(hdr_idx)
29961    ,p_event_class_code         => l_array_class_code(hdr_idx)
29962    ,p_event_type_code          => l_array_event_type(hdr_idx)
29963    ,p_event_number             => l_array_event_number(hdr_idx)
29964    ,p_event_date               => l_array_event_date(hdr_idx)
29965    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
29966    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
29967    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
29968    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
29969    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
29970    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
29971    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
29972    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
29973    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
29974    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
29975    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
29976    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
29977    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
29978    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
29979    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
29980 
29981 --
29982 -- set the status of entry to C_VALID (0)
29983 --
29984 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
29985 
29986 --
29987 -- initialize a row for ae header
29988 --
29989 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
29990 
29991 l_event_id := l_array_event_id(hdr_idx);
29992 
29993 --
29994 -- storing the hdr_idx for event. May be used by line cursor.
29995 --
29996 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
29997 
29998 --
29999 -- store sources from header extract. This can be improved to
30000 -- store only those sources from header extract that may be used in lines
30001 --
30002 
30003 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
30004 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
30005 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
30006 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
30007 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
30008 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
30009 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
30010 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
30011 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
30012 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
30013 g_array_event(l_event_id).array_value_char('source_20') := l_array_source_20(hdr_idx);
30014 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
30015 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
30016 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
30017 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
30018 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
30019 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
30020 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
30021 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
30022 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
30023 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
30024 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
30025 
30026 --
30027 -- initilaize the status of ae headers for diffrent balance types
30028 -- the status is initialised to C_NOT_CREATED (2)
30029 --
30030 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
30031 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
30032 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
30033 
30034 --
30035 -- call api to validate and store accounting attributes for header
30036 --
30037 
30038 ------------------------------------------------------------
30039 -- Accrual Reversal : to get date for Standard Source (NONE)
30040 ------------------------------------------------------------
30041 l_acc_rev_gl_date_source := NULL;
30042 
30043      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
30044       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_28');
30045      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
30046       l_rec_acct_attrs.array_date_value(2) := 
30047 xla_ae_sources_pkg.GetSystemSourceDate(
30048    p_source_code           => 'XLA_REFERENCE_DATE_1'
30049  , p_source_type_code      => 'Y'
30050  , p_source_application_id =>  602
30051 );
30052      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
30053       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_42');
30054 
30055 
30056 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
30057 
30058 XLA_AE_HEADER_PKG.SetJeCategoryName;
30059 
30060 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
30061 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
30062 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
30063 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
30064 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
30065 
30066 
30067 --
30068 xla_ae_header_pkg.SetHdrDescription(
30069    p_description => Description_1 (
30070    p_application_id => p_application_id 
30071  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
30072  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
30073  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
30074  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
30075  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
30076    )
30077 );
30078 --
30079 
30080 -- No header level analytical criteria
30081 
30082 --
30083 --accounting attribute enhancement, bug 3612931
30084 --
30085 l_trx_reversal_source := SUBSTR(NULL, 1,30);
30086 
30087 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
30088    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
30089 
30090    xla_accounting_err_pkg.build_message
30091       (p_appli_s_name            => 'XLA'
30092       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
30093       ,p_token_1                 => 'ACCT_ATTR_NAME'
30094       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
30095       ,p_token_2                 => 'PRODUCT_NAME'
30096       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
30097       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
30098       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
30099       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
30100 
30101 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
30102    --
30103    -- following sets the accounting attributes needed to reverse
30104    -- accounting for a distributeion
30105    --
30106    xla_ae_lines_pkg.SetTrxReversalAttrs
30107       (p_event_id              => l_event_id
30108       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
30109       ,p_trx_reversal_source   => l_trx_reversal_source);
30110 
30111 END IF;
30112 
30113 
30114 ----------------------------------------------------------------
30115 -- 4262811 -  update the header statuses to invalid in need be
30116 ----------------------------------------------------------------
30117 --
30118 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
30119 
30120 
30121   -----------------------------------------------
30122   -- No accrual reversal for the event class/type
30123   -----------------------------------------------
30124 ----------------------------------------------------------------
30125 
30126 --
30127 -- this ends the header loop iteration for one bulk fetch
30128 --
30129 END LOOP;
30130 
30131 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
30132 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
30133 
30134 --
30135 -- insert dummy rows into lines gt table that were created due to
30136 -- transaction reversals
30137 --
30138 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
30139    l_result := XLA_AE_LINES_PKG.InsertLines;
30140 END IF;
30141 
30142 --
30143 -- reset the temp_line_num for each set of events fetched from header
30144 -- cursor rather than doing it for each new event in line cursor
30145 -- Bug 3939231
30146 --
30147 xla_ae_lines_pkg.g_temp_line_num := 0;
30148 
30149 
30150 
30151 --
30152 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
30153 --
30154 --
30155 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30156 
30157       trace
30158          (p_msg      => 'SQL - FETCH line_cur'
30159          ,p_level    => C_LEVEL_STATEMENT
30160          ,p_module   => l_log_module);
30161 
30162 END IF;
30163 --
30164 --
30165 LOOP
30166   --
30167   FETCH line_cur BULK COLLECT INTO
30168         l_array_entity_id
30169       , l_array_legal_entity_id
30170       , l_array_entity_code
30171       , l_array_transaction_num
30172       , l_array_event_id
30173       , l_array_class_code
30174       , l_array_event_type
30175       , l_array_event_number
30176       , l_array_event_date
30177       , l_array_transaction_date
30178       , l_array_reference_num_1
30179       , l_array_reference_num_2
30180       , l_array_reference_num_3
30181       , l_array_reference_num_4
30182       , l_array_reference_char_1
30183       , l_array_reference_char_2
30184       , l_array_reference_char_3
30185       , l_array_reference_char_4
30186       , l_array_reference_date_1
30187       , l_array_reference_date_2
30188       , l_array_reference_date_3
30189       , l_array_reference_date_4
30190       , l_array_event_created_by
30191       , l_array_budgetary_control_flag
30192       , l_array_extract_line_num 
30193       , l_array_source_7
30194       , l_array_source_8
30195       , l_array_source_11
30196       LIMIT l_rows;
30197 
30198   --
30199   IF (C_LEVEL_EVENT >= g_log_level) THEN
30200             trace
30201                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
30202                ,p_level    => C_LEVEL_EVENT
30203                ,p_module   => l_log_module);
30204   END IF;
30205   --
30206   EXIT WHEN l_array_entity_id.count = 0;
30207 
30208   XLA_AE_LINES_PKG.g_rec_lines := null;
30209 
30210 --
30211 -- Bug 4458708
30212 --
30213 XLA_AE_LINES_PKG.g_LineNumber := 0;
30214 --
30215 --
30216 
30217 FOR Idx IN 1..l_array_event_id.count LOOP
30218    --
30219    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
30220    --
30221    l_event_id := l_array_event_id(idx);  -- 5648433
30222 
30223    --
30224    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
30225    --
30226 
30227    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
30228              (g_array_event(l_event_id).array_value_num('header_index'))
30229          ,'N'
30230          ) <> 'Y'
30231    THEN
30232       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30233          trace
30234             (p_msg      => 'Trancaction revesal option is not Y '
30235             ,p_level    => C_LEVEL_STATEMENT
30236             ,p_module   => l_log_module);
30237       END IF;
30238 
30239 --
30240 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
30241 --
30242 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
30243 --
30244 -- set event info as cache for other routines to refer event attributes
30245 --
30246 
30247 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
30248    l_previous_event_id := l_event_id;
30249 
30250    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
30251       (p_application_id           => p_application_id
30252       ,p_primary_ledger_id        => p_primary_ledger_id
30253       ,p_base_ledger_id           => p_base_ledger_id
30254       ,p_target_ledger_id         => p_target_ledger_id
30255       ,p_entity_id                => l_array_entity_id(Idx)
30256       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
30257       ,p_entity_code              => l_array_entity_code(Idx)
30258       ,p_transaction_num          => l_array_transaction_num(Idx)
30259       ,p_event_id                 => l_array_event_id(Idx)
30260       ,p_event_class_code         => l_array_class_code(Idx)
30261       ,p_event_type_code          => l_array_event_type(Idx)
30262       ,p_event_number             => l_array_event_number(Idx)
30263       ,p_event_date               => l_array_event_date(Idx)
30264       ,p_transaction_date         => l_array_transaction_date(Idx)
30265       ,p_reference_num_1          => l_array_reference_num_1(Idx)
30266       ,p_reference_num_2          => l_array_reference_num_2(Idx)
30267       ,p_reference_num_3          => l_array_reference_num_3(Idx)
30268       ,p_reference_num_4          => l_array_reference_num_4(Idx)
30269       ,p_reference_char_1         => l_array_reference_char_1(Idx)
30270       ,p_reference_char_2         => l_array_reference_char_2(Idx)
30271       ,p_reference_char_3         => l_array_reference_char_3(Idx)
30272       ,p_reference_char_4         => l_array_reference_char_4(Idx)
30273       ,p_reference_date_1         => l_array_reference_date_1(Idx)
30274       ,p_reference_date_2         => l_array_reference_date_2(Idx)
30275       ,p_reference_date_3         => l_array_reference_date_3(Idx)
30276       ,p_reference_date_4         => l_array_reference_date_4(Idx)
30277       ,p_event_created_by         => l_array_event_created_by(Idx)
30278       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
30279        --
30280 END IF;
30281 
30282 
30283 
30284 --
30285 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
30286 
30287 l_acct_reversal_source := SUBSTR(NULL, 1,30);
30288 
30289 IF l_continue_with_lines THEN
30290    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
30291       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
30292 
30293       xla_accounting_err_pkg.build_message
30294          (p_appli_s_name            => 'XLA'
30295          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
30296          ,p_token_1                 => 'LINE_NUMBER'
30297          ,p_value_1                 => l_array_extract_line_num(Idx)
30298          ,p_token_2                 => 'PRODUCT_NAME'
30299          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
30300          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
30301          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
30302          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
30303 
30304    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
30305       --
30306       -- following sets the accounting attributes needed to reverse
30307       -- accounting for a distributeion
30308       --
30309 
30310       --
30311       -- 5217187
30312       --
30313       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
30314       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
30315                                        g_array_event(l_event_id).array_value_num('header_index'));
30316       --
30317       --
30318 
30319       -- No reversal code generated
30320 
30321       xla_ae_lines_pkg.SetAcctReversalAttrs
30322          (p_event_id             => l_event_id
30323          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
30324          ,p_calculate_acctd_flag => l_calculate_acctd_flag
30325          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
30326    END IF;
30327 
30328    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
30329        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
30330 
30331 --
30332 AcctLineType_11 (
30333  p_application_id  => p_application_id
30334  ,p_event_id     => l_event_id
30335  ,p_calculate_acctd_flag => l_calculate_acctd_flag
30336  ,p_calculate_g_l_flag => l_calculate_g_l_flag
30337  ,p_actual_flag => l_actual_flag
30338  ,p_balance_type_code => l_balance_type_code
30339  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
30340  
30341  , p_source_8 => l_array_source_8(Idx)
30342  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
30343  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
30344  , p_source_11 => l_array_source_11(Idx)
30345  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
30346  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
30347  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
30348  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
30349  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
30350  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
30351  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
30352  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
30353  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
30354  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
30355  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
30356  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
30357  );
30358 If(l_balance_type_code = 'A') THEN
30359   l_actual_gain_loss_ref := l_gain_or_loss_ref;
30360 END IF;
30361 
30362 --
30363 
30364 
30365 --
30366 AcctLineType_17 (
30367  p_application_id  => p_application_id
30368  ,p_event_id     => l_event_id
30369  ,p_calculate_acctd_flag => l_calculate_acctd_flag
30370  ,p_calculate_g_l_flag => l_calculate_g_l_flag
30371  ,p_actual_flag => l_actual_flag
30372  ,p_balance_type_code => l_balance_type_code
30373  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
30374  
30375  , p_source_7 => l_array_source_7(Idx)
30376  , p_source_8 => l_array_source_8(Idx)
30377  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
30378  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
30379  , p_source_11 => l_array_source_11(Idx)
30380  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
30381  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
30382  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
30383  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
30384  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
30385  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
30386  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
30387  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
30388  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
30389  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
30390  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
30391  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
30392  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
30393  );
30394 If(l_balance_type_code = 'A') THEN
30395   l_actual_gain_loss_ref := l_gain_or_loss_ref;
30396 END IF;
30397 
30398 --
30399 
30400       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
30401       -- or secondary ledger that has different currency with primary
30402       -- or alc that is calculated by sla
30403       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
30404             (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'))
30405 
30406 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
30407 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
30408           AND (l_actual_flag = 'A')) THEN
30409         XLA_AE_LINES_PKG.CreateGainOrLossLines(
30410           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
30411          ,p_application_id   => p_application_id
30412          ,p_amb_context_code => 'DEFAULT'
30413          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
30414          ,p_event_class_code => C_EVENT_CLASS_CODE
30415          ,p_event_type_code  => C_EVENT_TYPE_CODE
30416          
30417          ,p_gain_ccid        => -1
30418          ,p_loss_ccid        => -1
30419 
30420          ,p_actual_flag      => l_actual_flag
30421          ,p_enc_flag         => null
30422          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
30423          ,p_enc_g_l_ref      => null
30424          );
30425       END IF;
30426    END IF;
30427 END IF;
30428 
30429    ELSE
30430       --
30431       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
30432       --
30433       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30434          trace
30435             (p_msg      => 'Trancaction revesal option is Y'
30436             ,p_level    => C_LEVEL_STATEMENT
30437             ,p_module   => l_log_module);
30438       END IF;
30439    END IF;
30440 
30441 END LOOP;
30442 l_result := XLA_AE_LINES_PKG.InsertLines ;
30443 end loop;
30444 close line_cur;
30445 
30446 
30447 --
30448 -- insert headers into xla_ae_headers_gt table
30449 --
30450 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
30451 
30452 -- insert into errors table here.
30453 
30454 END LOOP;
30455 
30456 --
30457 -- 4865292
30458 --
30459 -- Compare g_hdr_extract_count with event count in
30460 -- CreateHeadersAndLines.
30461 --
30462 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
30463 
30464 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30465    trace (p_msg     => '# rows extracted from header extract objects '
30466                     || ' (running total): '
30467                     || g_hdr_extract_count
30468          ,p_level   => C_LEVEL_STATEMENT
30469          ,p_module  => l_log_module);
30470 END IF;
30471 
30472 CLOSE header_cur;
30473 --
30474 
30475 --
30476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30477    trace
30478       (p_msg      => 'END of EventType_39'
30479       ,p_level    => C_LEVEL_PROCEDURE
30480       ,p_module   => l_log_module);
30481 END IF;
30482 --
30483 RETURN l_result;
30484 EXCEPTION
30485 WHEN xla_exceptions_pkg.application_exception THEN
30486    
30487 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
30488 
30489    
30490 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
30491 
30492    RAISE;
30493 
30494 WHEN NO_DATA_FOUND THEN
30495 
30496 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
30497 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
30498 
30499 FOR header_record IN header_cur
30500 LOOP
30501     l_array_header_events(header_record.event_id) := header_record.event_id;
30502 END LOOP;
30503 
30504 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
30505 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
30506 
30507 fnd_file.put_line(fnd_file.LOG, '                    ');
30508 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
30509 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
30510 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
30511 
30512 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
30513 LOOP
30514 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
30515 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
30516         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
30517 	END IF;
30518 END LOOP;
30519 
30520 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
30521 fnd_file.put_line(fnd_file.LOG, '                    ');
30522 
30523 
30524 xla_exceptions_pkg.raise_message
30525       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_39');
30526 
30527 
30528 WHEN OTHERS THEN
30529    xla_exceptions_pkg.raise_message
30530       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_39');
30531 END EventType_39;
30532 --
30533 
30534 ---------------------------------------
30535 --
30536 -- PRIVATE PROCEDURE
30537 --         insert_sources_40
30538 --
30539 ----------------------------------------
30540 --
30541 PROCEDURE insert_sources_40(
30542                                 p_target_ledger_id       IN NUMBER
30543                               , p_language               IN VARCHAR2
30544                               , p_sla_ledger_id          IN NUMBER
30545                               , p_pad_start_date         IN DATE
30546                               , p_pad_end_date           IN DATE
30547                          )
30548 IS
30549 
30550 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PERIOD_END_ACCRUAL_ALL';
30551 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
30552 p_apps_owner                   VARCHAR2(30);
30553 l_log_module                   VARCHAR2(240);
30554 BEGIN
30555 IF g_log_enabled THEN
30556       l_log_module := C_DEFAULT_MODULE||'.insert_sources_40';
30557 END IF;
30558 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30559 
30560       trace
30561          (p_msg      => 'BEGIN of insert_sources_40'
30562          ,p_level    => C_LEVEL_PROCEDURE
30563          ,p_module   => l_log_module);
30564 
30565 END IF;
30566 
30567 -- select APPS owner
30568 SELECT oracle_username
30569   INTO p_apps_owner
30570   FROM fnd_oracle_userid
30571  WHERE read_only_flag = 'U'
30572 ;
30573 
30574 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30575       trace
30576          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
30577                         ' - p_language = '||p_language||
30578                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
30579                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
30580                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
30581                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
30582          ,p_level    => C_LEVEL_STATEMENT
30583          ,p_module   => l_log_module);
30584 END IF;
30585 
30586 
30587 --
30588 INSERT INTO xla_diag_sources --hdr2
30589 (
30590         event_id
30591       , ledger_id
30592       , sla_ledger_id
30593       , description_language
30594       , object_name
30595       , object_type_code
30596       , line_number
30597       , source_application_id
30598       , source_type_code
30599       , source_code
30600       , source_value
30601       , source_meaning
30602       , created_by
30603       , creation_date
30604       , last_update_date
30605       , last_updated_by
30606       , last_update_login
30607       , program_update_date
30608       , program_application_id
30609       , program_id
30610       , request_id
30611 )
30612 SELECT
30613         event_id
30614       , p_target_ledger_id
30615       , p_sla_ledger_id
30616       , p_language
30617       , object_name
30618       , object_type_code
30619       , line_number
30620       , source_application_id
30621       , source_type_code
30622       , source_code
30623       , SUBSTR(source_value ,1,1996)
30624       , SUBSTR(source_meaning ,1,200)
30625       , xla_environment_pkg.g_Usr_Id
30626       , TRUNC(SYSDATE)
30627       , TRUNC(SYSDATE)
30628       , xla_environment_pkg.g_Usr_Id
30629       , xla_environment_pkg.g_Login_Id
30630       , TRUNC(SYSDATE)
30631       , xla_environment_pkg.g_Prog_Appl_Id
30632       , xla_environment_pkg.g_Prog_Id
30633       , xla_environment_pkg.g_Req_Id
30634   FROM (
30635        SELECT xet.event_id                  event_id
30636             , 0                          line_number
30637             , CASE r
30638                WHEN 1 THEN 'CST_XLA_RCV_HEADERS_V' 
30639                 WHEN 2 THEN 'CST_XLA_RCV_HEADERS_V' 
30640                 WHEN 3 THEN 'PO_HEADERS_REF_V' 
30641                 WHEN 4 THEN 'CST_XLA_RCV_REF_V' 
30642                 WHEN 5 THEN 'CST_XLA_RCV_REF_V' 
30643                 WHEN 6 THEN 'CST_XLA_RCV_REF_V' 
30644                 WHEN 7 THEN 'CST_XLA_RCV_REF_V' 
30645                 WHEN 8 THEN 'PO_DISTS_REF_V' 
30646                 WHEN 9 THEN 'CST_XLA_RCV_REF_V' 
30647                 WHEN 10 THEN 'CST_XLA_RCV_REF_V' 
30648                 WHEN 11 THEN 'PO_HEADERS_REF_V' 
30649                 WHEN 12 THEN 'CST_XLA_RCV_REF_V' 
30650                 WHEN 13 THEN 'PSA_CST_XLA_PEA_UPG_V' 
30651                 WHEN 14 THEN 'CST_XLA_RCV_HEADERS_V' 
30652                 
30653                ELSE null
30654               END                           object_name
30655             , CASE r
30656                 WHEN 1 THEN 'HEADER' 
30657                 WHEN 2 THEN 'HEADER' 
30658                 WHEN 3 THEN 'HEADER' 
30659                 WHEN 4 THEN 'HEADER' 
30660                 WHEN 5 THEN 'HEADER' 
30661                 WHEN 6 THEN 'HEADER' 
30662                 WHEN 7 THEN 'HEADER' 
30663                 WHEN 8 THEN 'HEADER' 
30664                 WHEN 9 THEN 'HEADER' 
30665                 WHEN 10 THEN 'HEADER' 
30666                 WHEN 11 THEN 'HEADER' 
30667                 WHEN 12 THEN 'HEADER' 
30668                 WHEN 13 THEN 'HEADER' 
30669                 WHEN 14 THEN 'HEADER' 
30670                 
30671                 ELSE null
30672               END                           object_type_code
30673             , CASE r
30674                 WHEN 1 THEN '707' 
30675                 WHEN 2 THEN '707' 
30676                 WHEN 3 THEN '201' 
30677                 WHEN 4 THEN '707' 
30678                 WHEN 5 THEN '707' 
30679                 WHEN 6 THEN '707' 
30680                 WHEN 7 THEN '707' 
30681                 WHEN 8 THEN '201' 
30682                 WHEN 9 THEN '707' 
30683                 WHEN 10 THEN '707' 
30684                 WHEN 11 THEN '201' 
30685                 WHEN 12 THEN '707' 
30686                 WHEN 13 THEN '707' 
30687                 WHEN 14 THEN '707' 
30688                 
30689                 ELSE null
30690               END                           source_application_id
30691             , 'S'             source_type_code
30692             , CASE r
30693                 WHEN 1 THEN 'DISTRIBUTION_TYPE' 
30694                 WHEN 2 THEN 'CURRENCY_CODE' 
30695                 WHEN 3 THEN 'PURCH_ENCUMBRANCE_FLAG' 
30696                 WHEN 4 THEN 'APPLIED_TO_APPL_ID' 
30697                 WHEN 5 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
30698                 WHEN 6 THEN 'APPLIED_TO_ENTITY_CODE' 
30699                 WHEN 7 THEN 'APPLIED_TO_PO_DOC_ID' 
30700                 WHEN 8 THEN 'PO_BUDGET_ACCOUNT' 
30701                 WHEN 9 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
30702                 WHEN 10 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
30703                 WHEN 11 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
30704                 WHEN 12 THEN 'PO_DISTRIBUTION_ID' 
30705                 WHEN 13 THEN 'CST_PEA_ENC_UPG_OPTION' 
30706                 WHEN 14 THEN 'TRANSFER_TO_GL_INDICATOR' 
30707                 
30708                 ELSE null
30709               END                           source_code
30710             , CASE r
30711                 WHEN 1 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
30712                 WHEN 2 THEN TO_CHAR(h1.CURRENCY_CODE)
30713                 WHEN 3 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_FLAG)
30714                 WHEN 4 THEN TO_CHAR(h3.APPLIED_TO_APPL_ID)
30715                 WHEN 5 THEN TO_CHAR(h3.APPLIED_TO_DIST_LINK_TYPE)
30716                 WHEN 6 THEN TO_CHAR(h3.APPLIED_TO_ENTITY_CODE)
30717                 WHEN 7 THEN TO_CHAR(h3.APPLIED_TO_PO_DOC_ID)
30718                 WHEN 8 THEN TO_CHAR(h4.PO_BUDGET_ACCOUNT)
30719                 WHEN 9 THEN TO_CHAR(h3.ENCUM_REVERSAL_AMOUNT_ENTERED)
30720                 WHEN 10 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_AMOUNT)
30721                 WHEN 11 THEN TO_CHAR(h5.PURCH_ENCUMBRANCE_TYPE_ID)
30722                 WHEN 12 THEN TO_CHAR(h3.PO_DISTRIBUTION_ID)
30723                 WHEN 13 THEN TO_CHAR(h6.CST_PEA_ENC_UPG_OPTION)
30724                 WHEN 14 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
30725                 
30726                 ELSE null
30727               END                           source_value
30728             , CASE r
30729                 WHEN 1 THEN fvl9.meaning
30730                 WHEN 14 THEN fvl42.meaning
30731                 
30732                 ELSE null
30733               END               source_meaning
30734          FROM xla_events_gt     xet  
30735       , CST_XLA_RCV_HEADERS_V  h1
30736       , CST_XLA_RCV_REF_V  h3
30737       , PO_DISTS_REF_V  h4
30738       , PO_HEADERS_REF_V  h5
30739       , PSA_CST_XLA_PEA_UPG_V  h6
30740   , fnd_lookup_values    fvl9
30741   , fnd_lookup_values    fvl42
30742              ,(select rownum r from all_objects where rownum <= 14 and owner = p_apps_owner)
30743          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
30744            AND xet.event_class_code = C_EVENT_CLASS_CODE
30745               AND h1.event_id = xet.event_id
30746  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 fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
30747   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
30748   AND fvl9.view_application_id(+) = 700
30749   AND fvl9.language(+)            = USERENV('LANG')
30750      AND fvl42.lookup_type(+)         = 'YES_NO'
30751   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
30752   AND fvl42.view_application_id(+) = 0
30753   AND fvl42.language(+)            = USERENV('LANG')
30754   
30755 )
30756 ;
30757 --
30758 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30759 
30760       trace
30761          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
30762          ,p_level    => C_LEVEL_STATEMENT
30763          ,p_module   => l_log_module);
30764 
30765 END IF;
30766 --
30767 
30768 
30769 
30770 --
30771 INSERT INTO xla_diag_sources  --line2
30772 (
30773         event_id
30774       , ledger_id
30775       , sla_ledger_id
30776       , description_language
30777       , object_name
30778       , object_type_code
30779       , line_number
30780       , source_application_id
30781       , source_type_code
30782       , source_code
30783       , source_value
30784       , source_meaning
30785       , created_by
30786       , creation_date
30787       , last_update_date
30788       , last_updated_by
30789       , last_update_login
30790       , program_update_date
30791       , program_application_id
30792       , program_id
30793       , request_id
30794 )
30795 SELECT  event_id
30796       , p_target_ledger_id
30797       , p_sla_ledger_id
30798       , p_language
30799       , object_name
30800       , object_type_code
30801       , line_number
30802       , source_application_id
30803       , source_type_code
30804       , source_code
30805       , SUBSTR(source_value,1,1996)
30806       , SUBSTR(source_meaning ,1,200)
30807       , xla_environment_pkg.g_Usr_Id
30808       , TRUNC(SYSDATE)
30809       , TRUNC(SYSDATE)
30810       , xla_environment_pkg.g_Usr_Id
30811       , xla_environment_pkg.g_Login_Id
30812       , TRUNC(SYSDATE)
30813       , xla_environment_pkg.g_Prog_Appl_Id
30814       , xla_environment_pkg.g_Prog_Id
30815       , xla_environment_pkg.g_Req_Id
30816   FROM (
30817        SELECT xet.event_id                  event_id
30818             , l2.line_number                 line_number
30819             , CASE r
30820                WHEN 1 THEN 'CST_XLA_RCV_LINES_V' 
30821                 WHEN 2 THEN 'CST_XLA_RCV_LINES_V' 
30822                 
30823                ELSE null
30824               END                           object_name
30825             , CASE r
30826                 WHEN 1 THEN 'LINE' 
30827                 WHEN 2 THEN 'LINE' 
30828                 
30829                 ELSE null
30830               END                           object_type_code
30831             , CASE r
30832                 WHEN 1 THEN '707' 
30833                 WHEN 2 THEN '707' 
30834                 
30835                 ELSE null
30836               END                           source_application_id
30837             , 'S'             source_type_code
30838             , CASE r
30839                 WHEN 1 THEN 'DISTRIBUTION_IDENTIFIER' 
30840                 WHEN 2 THEN 'RCV_ACCOUNTING_LINE_TYPE' 
30841                 
30842                 ELSE null
30843               END                           source_code
30844             , CASE r
30845                 WHEN 1 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
30846                 WHEN 2 THEN TO_CHAR(l2.RCV_ACCOUNTING_LINE_TYPE)
30847                 
30848                 ELSE null
30849               END                           source_value
30850             , null              source_meaning
30851          FROM  xla_events_gt     xet  
30852         , CST_XLA_RCV_LINES_V  l2
30853             , (select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
30854         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
30855           AND xet.event_class_code = C_EVENT_CLASS_CODE
30856             AND l2.event_id          = xet.event_id
30857 
30858 )
30859 ;
30860 --
30861 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
30862 
30863       trace
30864          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
30865          ,p_level    => C_LEVEL_STATEMENT
30866          ,p_module   => l_log_module);
30867 
30868 END IF;
30869 
30870 
30871 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30872       trace
30873          (p_msg      => 'END of insert_sources_40'
30874          ,p_level    => C_LEVEL_PROCEDURE
30875          ,p_module   => l_log_module);
30876 END IF;
30877 EXCEPTION
30878   WHEN xla_exceptions_pkg.application_exception THEN
30879       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
30880             trace
30881                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
30882                ,p_level    => C_LEVEL_EXCEPTION
30883                ,p_module   => l_log_module);
30884       END IF;
30885       RAISE;
30886   WHEN OTHERS THEN
30887       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
30888             trace
30889                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
30890                ,p_level    => C_LEVEL_EXCEPTION
30891                ,p_module   => l_log_module);
30892        END IF;
30893        xla_exceptions_pkg.raise_message
30894            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_40');
30895 END insert_sources_40;
30896 --
30897 
30898 ---------------------------------------
30899 --
30900 -- PRIVATE FUNCTION
30901 --         EventClass_40
30902 --
30903 ----------------------------------------
30904 --
30905 FUNCTION EventClass_40
30906        (p_application_id         IN NUMBER
30907        ,p_base_ledger_id         IN NUMBER
30908        ,p_target_ledger_id       IN NUMBER
30909        ,p_language               IN VARCHAR2
30910        ,p_currency_code          IN VARCHAR2
30911        ,p_sla_ledger_id          IN NUMBER
30912        ,p_pad_start_date         IN DATE
30913        ,p_pad_end_date           IN DATE
30914        ,p_primary_ledger_id      IN NUMBER)
30915 RETURN BOOLEAN IS
30916 --
30917 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PERIOD_END_ACCRUAL_ALL';
30918 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PERIOD_END_ACCRUAL';
30919 
30920 l_calculate_acctd_flag   VARCHAR2(1) :='N';
30921 l_calculate_g_l_flag     VARCHAR2(1) :='N';
30922 --
30923 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
30924 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
30925 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
30926 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
30927 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
30928 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
30929 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
30930 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
30931 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
30932 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
30933 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
30934 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
30935 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
30936 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
30937 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
30938 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
30939 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
30940 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
30941 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
30942 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
30943 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
30944 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
30945 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
30946 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
30947 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
30948 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
30949 
30950 l_event_id                             NUMBER;
30951 l_previous_event_id                    NUMBER;
30952 l_first_event_id                       NUMBER;
30953 l_last_event_id                        NUMBER;
30954 
30955 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
30956 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
30957 --
30958 --
30959 l_result                    BOOLEAN := TRUE;
30960 l_rows                      NUMBER  := 1000;
30961 l_event_type_name           VARCHAR2(80) := 'All';
30962 l_event_class_name          VARCHAR2(80) := 'Period End Accrual';
30963 l_description               VARCHAR2(4000);
30964 l_transaction_reversal      NUMBER;
30965 l_ae_header_id              NUMBER;
30966 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
30967 l_log_module                VARCHAR2(240);
30968 --
30969 l_acct_reversal_source      VARCHAR2(30);
30970 l_trx_reversal_source       VARCHAR2(30);
30971 
30972 l_continue_with_lines       BOOLEAN := TRUE;
30973 --
30974 l_acc_rev_gl_date_source    DATE;                      -- 4262811
30975 --
30976 type t_array_event_id is table of number index by binary_integer;
30977 
30978 l_rec_array_event                    t_rec_array_event;
30979 l_null_rec_array_event               t_rec_array_event;
30980 l_array_ae_header_id                 xla_number_array_type;
30981 l_actual_flag                        VARCHAR2(1) := NULL;
30982 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
30983 l_balance_type_code                  VARCHAR2(1) :=NULL;
30984 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
30985 
30986 --
30987 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
30988 --
30989 
30990 TYPE t_array_source_9 IS TABLE OF CST_XLA_RCV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
30991 TYPE t_array_source_11 IS TABLE OF CST_XLA_RCV_HEADERS_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
30992 TYPE t_array_source_16 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
30993 TYPE t_array_source_19 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
30994 TYPE t_array_source_20 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
30995 TYPE t_array_source_21 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
30996 TYPE t_array_source_23 IS TABLE OF CST_XLA_RCV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
30997 TYPE t_array_source_24 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
30998 TYPE t_array_source_25 IS TABLE OF CST_XLA_RCV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
30999 TYPE t_array_source_26 IS TABLE OF CST_XLA_RCV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
31000 TYPE t_array_source_28 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
31001 TYPE t_array_source_30 IS TABLE OF CST_XLA_RCV_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
31002 TYPE t_array_source_32 IS TABLE OF PSA_CST_XLA_PEA_UPG_V.CST_PEA_ENC_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
31003 TYPE t_array_source_42 IS TABLE OF CST_XLA_RCV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
31004 
31005 TYPE t_array_source_8 IS TABLE OF CST_XLA_RCV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
31006 TYPE t_array_source_29 IS TABLE OF CST_XLA_RCV_LINES_V.RCV_ACCOUNTING_LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
31007 
31008 l_array_source_9              t_array_source_9;
31009 l_array_source_9_meaning      t_array_lookup_meaning;
31010 l_array_source_11              t_array_source_11;
31011 l_array_source_16              t_array_source_16;
31012 l_array_source_19              t_array_source_19;
31013 l_array_source_20              t_array_source_20;
31014 l_array_source_21              t_array_source_21;
31015 l_array_source_23              t_array_source_23;
31016 l_array_source_24              t_array_source_24;
31017 l_array_source_25              t_array_source_25;
31018 l_array_source_26              t_array_source_26;
31019 l_array_source_28              t_array_source_28;
31020 l_array_source_30              t_array_source_30;
31021 l_array_source_32              t_array_source_32;
31022 l_array_source_42              t_array_source_42;
31023 l_array_source_42_meaning      t_array_lookup_meaning;
31024 
31025 l_array_source_8      t_array_source_8;
31026 l_array_source_29      t_array_source_29;
31027 
31028 --
31029 CURSOR header_cur
31030 IS
31031 SELECT /*+ leading(xet) cardinality(xet,1) */
31032 -- Event Class Code: PERIOD_END_ACCRUAL
31033     xet.entity_id
31034    ,xet.legal_entity_id
31035    ,xet.entity_code
31036    ,xet.transaction_number
31037    ,xet.event_id
31038    ,xet.event_class_code
31039    ,xet.event_type_code
31040    ,xet.event_number
31041    ,xet.event_date
31042    ,xet.transaction_date
31043    ,xet.reference_num_1
31044    ,xet.reference_num_2
31045    ,xet.reference_num_3
31046    ,xet.reference_num_4
31047    ,xet.reference_char_1
31048    ,xet.reference_char_2
31049    ,xet.reference_char_3
31050    ,xet.reference_char_4
31051    ,xet.reference_date_1
31052    ,xet.reference_date_2
31053    ,xet.reference_date_3
31054    ,xet.reference_date_4
31055    ,xet.event_created_by
31056    ,xet.budgetary_control_flag 
31057   , h1.DISTRIBUTION_TYPE    source_9
31058   , fvl9.meaning   source_9_meaning
31059   , h1.CURRENCY_CODE    source_11
31060   , h5.PURCH_ENCUMBRANCE_FLAG    source_16
31061   , h3.APPLIED_TO_APPL_ID    source_19
31062   , h3.APPLIED_TO_DIST_LINK_TYPE    source_20
31063   , h3.APPLIED_TO_ENTITY_CODE    source_21
31064   , h3.APPLIED_TO_PO_DOC_ID    source_23
31065   , h4.PO_BUDGET_ACCOUNT    source_24
31066   , h3.ENCUM_REVERSAL_AMOUNT_ENTERED    source_25
31067   , h3.ENCUMBRANCE_REVERSAL_AMOUNT    source_26
31068   , h5.PURCH_ENCUMBRANCE_TYPE_ID    source_28
31069   , h3.PO_DISTRIBUTION_ID    source_30
31070   , h6.CST_PEA_ENC_UPG_OPTION    source_32
31071   , h1.TRANSFER_TO_GL_INDICATOR    source_42
31072   , fvl42.meaning   source_42_meaning
31073   FROM xla_events_gt     xet 
31074   , CST_XLA_RCV_HEADERS_V  h1
31075   , CST_XLA_RCV_REF_V  h3
31076   , PO_DISTS_REF_V  h4
31077   , PO_HEADERS_REF_V  h5
31078   , PSA_CST_XLA_PEA_UPG_V  h6
31079   , fnd_lookup_values    fvl9
31080   , fnd_lookup_values    fvl42
31081  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
31082    and xet.event_class_code = C_EVENT_CLASS_CODE
31083    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
31084  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 fvl9.lookup_type(+)         = 'CST_DISTRIBUTION_TYPE'
31085   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
31086   AND fvl9.view_application_id(+) = 700
31087   AND fvl9.language(+)            = USERENV('LANG')
31088      AND fvl42.lookup_type(+)         = 'YES_NO'
31089   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
31090   AND fvl42.view_application_id(+) = 0
31091   AND fvl42.language(+)            = USERENV('LANG')
31092   
31093  ORDER BY event_id
31094 ;
31095 
31096 
31097 --
31098 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
31099 IS
31100 SELECT  /*+ leading(xet) cardinality(xet,1) */
31101 -- Event Class Code: PERIOD_END_ACCRUAL
31102     xet.entity_id
31103    ,xet.legal_entity_id
31104    ,xet.entity_code
31105    ,xet.transaction_number
31106    ,xet.event_id
31107    ,xet.event_class_code
31108    ,xet.event_type_code
31109    ,xet.event_number
31110    ,xet.event_date
31111    ,xet.transaction_date
31112    ,xet.reference_num_1
31113    ,xet.reference_num_2
31114    ,xet.reference_num_3
31115    ,xet.reference_num_4
31116    ,xet.reference_char_1
31117    ,xet.reference_char_2
31118    ,xet.reference_char_3
31119    ,xet.reference_char_4
31120    ,xet.reference_date_1
31121    ,xet.reference_date_2
31122    ,xet.reference_date_3
31123    ,xet.reference_date_4
31124    ,xet.event_created_by
31125    ,xet.budgetary_control_flag
31126  , l2.LINE_NUMBER  
31127   , l2.DISTRIBUTION_IDENTIFIER    source_8
31128   , l2.RCV_ACCOUNTING_LINE_TYPE    source_29
31129   FROM xla_events_gt     xet 
31130   , CST_XLA_RCV_LINES_V  l2
31131  WHERE xet.event_id between x_first_event_id and x_last_event_id
31132    and xet.event_date between p_pad_start_date and p_pad_end_date
31133    and xet.event_class_code = C_EVENT_CLASS_CODE
31134    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
31135 ;
31136 
31137 --
31138 BEGIN
31139 IF g_log_enabled THEN
31140    l_log_module := C_DEFAULT_MODULE||'.EventClass_40';
31141 END IF;
31142 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31143    trace
31144       (p_msg      => 'BEGIN of EventClass_40'
31145       ,p_level    => C_LEVEL_PROCEDURE
31146       ,p_module   => l_log_module);
31147 END IF;
31148 
31149 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31150    trace
31151       (p_msg      => 'p_application_id = '||p_application_id||
31152                      ' - p_base_ledger_id = '||p_base_ledger_id||
31153                      ' - p_target_ledger_id  = '||p_target_ledger_id||
31154                      ' - p_language = '||p_language||
31155                      ' - p_currency_code = '||p_currency_code||
31156                      ' - p_sla_ledger_id = '||p_sla_ledger_id
31157       ,p_level    => C_LEVEL_STATEMENT
31158       ,p_module   => l_log_module);
31159 END IF;
31160 --
31161 -- initialze arrays
31162 --
31163 g_array_event.DELETE;
31164 l_rec_array_event := l_null_rec_array_event;
31165 --
31166 --------------------------------------
31167 -- 4262811 Initialze MPA Line Number
31168 --------------------------------------
31169 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
31170 
31171 --
31172 
31173 --
31174 OPEN header_cur;
31175 --
31176 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31177    trace
31178    (p_msg      => 'SQL - FETCH header_cur'
31179    ,p_level    => C_LEVEL_STATEMENT
31180    ,p_module   => l_log_module);
31181 END IF;
31182 --
31183 LOOP
31184 FETCH header_cur BULK COLLECT INTO
31185         l_array_entity_id
31186       , l_array_legal_entity_id
31187       , l_array_entity_code
31188       , l_array_transaction_num
31189       , l_array_event_id
31190       , l_array_class_code
31191       , l_array_event_type
31192       , l_array_event_number
31193       , l_array_event_date
31194       , l_array_transaction_date
31195       , l_array_reference_num_1
31196       , l_array_reference_num_2
31197       , l_array_reference_num_3
31198       , l_array_reference_num_4
31199       , l_array_reference_char_1
31200       , l_array_reference_char_2
31201       , l_array_reference_char_3
31202       , l_array_reference_char_4
31203       , l_array_reference_date_1
31204       , l_array_reference_date_2
31205       , l_array_reference_date_3
31206       , l_array_reference_date_4
31207       , l_array_event_created_by
31208       , l_array_budgetary_control_flag 
31209       , l_array_source_9
31210       , l_array_source_9_meaning
31211       , l_array_source_11
31212       , l_array_source_16
31213       , l_array_source_19
31214       , l_array_source_20
31215       , l_array_source_21
31216       , l_array_source_23
31217       , l_array_source_24
31218       , l_array_source_25
31219       , l_array_source_26
31220       , l_array_source_28
31221       , l_array_source_30
31222       , l_array_source_32
31223       , l_array_source_42
31224       , l_array_source_42_meaning
31225       LIMIT l_rows;
31226 --
31227 IF (C_LEVEL_EVENT >= g_log_level) THEN
31228    trace
31229    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
31230    ,p_level    => C_LEVEL_EVENT
31231    ,p_module   => l_log_module);
31232 END IF;
31233 --
31234 EXIT WHEN l_array_entity_id.COUNT = 0;
31235 
31236 -- initialize arrays
31237 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
31238 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
31239 
31240 --
31241 -- Bug 4458708
31242 --
31243 XLA_AE_LINES_PKG.g_LineNumber := 0;
31244 
31245 
31246 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
31247 g_last_hdr_idx := l_array_event_id.LAST;
31248 --
31249 -- loop for the headers. Each iteration is for each header extract row
31250 -- fetched in header cursor
31251 --
31252 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
31253 
31254 --
31255 -- set event info as cache for other routines to refer event attributes
31256 --
31257 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
31258    (p_application_id           => p_application_id
31259    ,p_primary_ledger_id        => p_primary_ledger_id
31260    ,p_base_ledger_id           => p_base_ledger_id
31261    ,p_target_ledger_id         => p_target_ledger_id
31262    ,p_entity_id                => l_array_entity_id(hdr_idx)
31263    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
31264    ,p_entity_code              => l_array_entity_code(hdr_idx)
31265    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
31266    ,p_event_id                 => l_array_event_id(hdr_idx)
31267    ,p_event_class_code         => l_array_class_code(hdr_idx)
31268    ,p_event_type_code          => l_array_event_type(hdr_idx)
31269    ,p_event_number             => l_array_event_number(hdr_idx)
31270    ,p_event_date               => l_array_event_date(hdr_idx)
31271    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
31272    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
31273    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
31274    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
31275    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
31276    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
31277    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
31278    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
31279    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
31280    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
31281    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
31282    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
31283    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
31284    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
31285    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
31286 
31287 --
31288 -- set the status of entry to C_VALID (0)
31289 --
31290 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
31291 
31292 --
31293 -- initialize a row for ae header
31294 --
31295 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
31296 
31297 l_event_id := l_array_event_id(hdr_idx);
31298 
31299 --
31300 -- storing the hdr_idx for event. May be used by line cursor.
31301 --
31302 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
31303 
31304 --
31305 -- store sources from header extract. This can be improved to
31306 -- store only those sources from header extract that may be used in lines
31307 --
31308 
31309 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
31310 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
31311 g_array_event(l_event_id).array_value_char('source_11') := l_array_source_11(hdr_idx);
31312 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
31313 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
31314 g_array_event(l_event_id).array_value_char('source_20') := l_array_source_20(hdr_idx);
31315 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
31316 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
31317 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
31318 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
31319 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
31320 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
31321 g_array_event(l_event_id).array_value_num('source_30') := l_array_source_30(hdr_idx);
31322 g_array_event(l_event_id).array_value_char('source_32') := l_array_source_32(hdr_idx);
31323 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
31324 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
31325 
31326 --
31327 -- initilaize the status of ae headers for diffrent balance types
31328 -- the status is initialised to C_NOT_CREATED (2)
31329 --
31330 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
31331 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
31332 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
31333 
31334 --
31335 -- call api to validate and store accounting attributes for header
31336 --
31337 
31338 ------------------------------------------------------------
31339 -- Accrual Reversal : to get date for Standard Source (NONE)
31340 ------------------------------------------------------------
31341 l_acc_rev_gl_date_source := NULL;
31342 
31343      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
31344       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_28');
31345      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
31346       l_rec_acct_attrs.array_date_value(2) := 
31347 xla_ae_sources_pkg.GetSystemSourceDate(
31348    p_source_code           => 'XLA_REFERENCE_DATE_1'
31349  , p_source_type_code      => 'Y'
31350  , p_source_application_id =>  602
31351 );
31352      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
31353       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_42');
31354 
31355 
31356 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
31357 
31358 XLA_AE_HEADER_PKG.SetJeCategoryName;
31359 
31360 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
31361 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
31362 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
31363 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
31364 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
31365 
31366 
31367 -- No header level analytical criteria
31368 
31369 --
31370 --accounting attribute enhancement, bug 3612931
31371 --
31372 l_trx_reversal_source := SUBSTR(NULL, 1,30);
31373 
31374 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
31375    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
31376 
31377    xla_accounting_err_pkg.build_message
31378       (p_appli_s_name            => 'XLA'
31379       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
31380       ,p_token_1                 => 'ACCT_ATTR_NAME'
31381       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
31382       ,p_token_2                 => 'PRODUCT_NAME'
31383       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
31384       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
31385       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
31386       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
31387 
31388 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
31389    --
31390    -- following sets the accounting attributes needed to reverse
31391    -- accounting for a distributeion
31392    --
31393    xla_ae_lines_pkg.SetTrxReversalAttrs
31394       (p_event_id              => l_event_id
31395       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
31396       ,p_trx_reversal_source   => l_trx_reversal_source);
31397 
31398 END IF;
31399 
31400 
31401 ----------------------------------------------------------------
31402 -- 4262811 -  update the header statuses to invalid in need be
31403 ----------------------------------------------------------------
31404 --
31405 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
31406 
31407 
31408 --
31409 -- Generate the accrual reversal headers
31410 --
31411 IF NVL(l_trx_reversal_source, 'N') = 'N' THEN
31412 
31413 
31414 
31415 -- indicate that the accrual entry has a reversal entry
31416 XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag(hdr_idx) := 'Y';
31417 
31418 --
31419 -- initialize a row for ae header
31420 --
31421 g_last_hdr_idx := g_last_hdr_idx + 1;
31422 XLA_AE_HEADER_PKG.CopyHeaderInfo (p_parent_hdr_idx => hdr_idx,
31423                                   p_hdr_idx        => g_last_hdr_idx) ;
31424 XLA_AE_HEADER_PKG.g_rec_header_new.array_header_num      (g_last_hdr_idx) := 1;
31425 XLA_AE_HEADER_PKG.g_rec_header_new.array_parent_header_id(g_last_hdr_idx) :=
31426                XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx);
31427 
31428 --
31429 -- record the index for the reversal entry, it will be used by the journal
31430 -- line creation
31431 --
31432 g_array_event(l_event_id).array_value_num('acc_rev_header_index') := g_last_hdr_idx;
31433 
31434 --
31435 -- Populate the GL Date and override the GL date defined in the
31436 -- SetHdrAcctAttrs if necessary
31437 --
31438 
31439               ---------------------- XLA_FIRST_DAY_NEXT_GL_PERIOD ----------------------
31440               XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx) := 'XLA_FIRST_DAY_NEXT_GL_PERIOD';
31441               XLA_AE_HEADER_PKG.GetAccrualRevDate(g_last_hdr_idx
31442                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(g_last_hdr_idx)
31443                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
31444                                        ,XLA_AE_HEADER_PKG.g_rec_header_new.array_acc_rev_gl_date_option(g_last_hdr_idx));
31445               
31446 
31447 --
31448 -- Update the header status
31449 --
31450 XLA_AE_JOURNAL_ENTRY_PKG.updateJournalEntryStatus (p_hdr_idx => g_last_hdr_idx);
31451 
31452 
31453 
31454 END IF;
31455 
31456 
31457 ----------------------------------------------------------------
31458 
31459 --
31460 -- this ends the header loop iteration for one bulk fetch
31461 --
31462 END LOOP;
31463 
31464 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
31465 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
31466 
31467 --
31468 -- insert dummy rows into lines gt table that were created due to
31469 -- transaction reversals
31470 --
31471 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
31472    l_result := XLA_AE_LINES_PKG.InsertLines;
31473 END IF;
31474 
31475 --
31476 -- reset the temp_line_num for each set of events fetched from header
31477 -- cursor rather than doing it for each new event in line cursor
31478 -- Bug 3939231
31479 --
31480 xla_ae_lines_pkg.g_temp_line_num := 0;
31481 
31482 
31483 
31484 --
31485 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
31486 --
31487 --
31488 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31489 
31490       trace
31491          (p_msg      => 'SQL - FETCH line_cur'
31492          ,p_level    => C_LEVEL_STATEMENT
31493          ,p_module   => l_log_module);
31494 
31495 END IF;
31496 --
31497 --
31498 LOOP
31499   --
31500   FETCH line_cur BULK COLLECT INTO
31501         l_array_entity_id
31502       , l_array_legal_entity_id
31503       , l_array_entity_code
31504       , l_array_transaction_num
31505       , l_array_event_id
31506       , l_array_class_code
31507       , l_array_event_type
31508       , l_array_event_number
31509       , l_array_event_date
31510       , l_array_transaction_date
31511       , l_array_reference_num_1
31512       , l_array_reference_num_2
31513       , l_array_reference_num_3
31514       , l_array_reference_num_4
31515       , l_array_reference_char_1
31516       , l_array_reference_char_2
31517       , l_array_reference_char_3
31518       , l_array_reference_char_4
31519       , l_array_reference_date_1
31520       , l_array_reference_date_2
31521       , l_array_reference_date_3
31522       , l_array_reference_date_4
31523       , l_array_event_created_by
31524       , l_array_budgetary_control_flag
31525       , l_array_extract_line_num 
31526       , l_array_source_8
31527       , l_array_source_29
31528       LIMIT l_rows;
31529 
31530   --
31531   IF (C_LEVEL_EVENT >= g_log_level) THEN
31532             trace
31533                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
31534                ,p_level    => C_LEVEL_EVENT
31535                ,p_module   => l_log_module);
31536   END IF;
31537   --
31538   EXIT WHEN l_array_entity_id.count = 0;
31539 
31540   XLA_AE_LINES_PKG.g_rec_lines := null;
31541 
31542 --
31543 -- Bug 4458708
31544 --
31545 XLA_AE_LINES_PKG.g_LineNumber := 0;
31546 --
31547 --
31548 
31549 FOR Idx IN 1..l_array_event_id.count LOOP
31550    --
31551    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
31552    --
31553    l_event_id := l_array_event_id(idx);  -- 5648433
31554 
31555    --
31556    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
31557    --
31558 
31559    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
31560              (g_array_event(l_event_id).array_value_num('header_index'))
31561          ,'N'
31562          ) <> 'Y'
31563    THEN
31564       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31565          trace
31566             (p_msg      => 'Trancaction revesal option is not Y '
31567             ,p_level    => C_LEVEL_STATEMENT
31568             ,p_module   => l_log_module);
31569       END IF;
31570 
31571 --
31572 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
31573 --
31574 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
31575 --
31576 -- set event info as cache for other routines to refer event attributes
31577 --
31578 
31579 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
31580    l_previous_event_id := l_event_id;
31581 
31582    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
31583       (p_application_id           => p_application_id
31584       ,p_primary_ledger_id        => p_primary_ledger_id
31585       ,p_base_ledger_id           => p_base_ledger_id
31586       ,p_target_ledger_id         => p_target_ledger_id
31587       ,p_entity_id                => l_array_entity_id(Idx)
31588       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
31589       ,p_entity_code              => l_array_entity_code(Idx)
31590       ,p_transaction_num          => l_array_transaction_num(Idx)
31591       ,p_event_id                 => l_array_event_id(Idx)
31592       ,p_event_class_code         => l_array_class_code(Idx)
31593       ,p_event_type_code          => l_array_event_type(Idx)
31594       ,p_event_number             => l_array_event_number(Idx)
31595       ,p_event_date               => l_array_event_date(Idx)
31596       ,p_transaction_date         => l_array_transaction_date(Idx)
31597       ,p_reference_num_1          => l_array_reference_num_1(Idx)
31598       ,p_reference_num_2          => l_array_reference_num_2(Idx)
31599       ,p_reference_num_3          => l_array_reference_num_3(Idx)
31600       ,p_reference_num_4          => l_array_reference_num_4(Idx)
31601       ,p_reference_char_1         => l_array_reference_char_1(Idx)
31602       ,p_reference_char_2         => l_array_reference_char_2(Idx)
31603       ,p_reference_char_3         => l_array_reference_char_3(Idx)
31604       ,p_reference_char_4         => l_array_reference_char_4(Idx)
31605       ,p_reference_date_1         => l_array_reference_date_1(Idx)
31606       ,p_reference_date_2         => l_array_reference_date_2(Idx)
31607       ,p_reference_date_3         => l_array_reference_date_3(Idx)
31608       ,p_reference_date_4         => l_array_reference_date_4(Idx)
31609       ,p_event_created_by         => l_array_event_created_by(Idx)
31610       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
31611        --
31612 END IF;
31613 
31614 
31615 
31616 --
31617 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
31618 
31619 l_acct_reversal_source := SUBSTR(NULL, 1,30);
31620 
31621 IF l_continue_with_lines THEN
31622    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
31623       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
31624 
31625       xla_accounting_err_pkg.build_message
31626          (p_appli_s_name            => 'XLA'
31627          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
31628          ,p_token_1                 => 'LINE_NUMBER'
31629          ,p_value_1                 => l_array_extract_line_num(Idx)
31630          ,p_token_2                 => 'PRODUCT_NAME'
31631          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
31632          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
31633          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
31634          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
31635 
31636    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
31637       --
31638       -- following sets the accounting attributes needed to reverse
31639       -- accounting for a distributeion
31640       --
31641 
31642       --
31643       -- 5217187
31644       --
31645       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
31646       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
31647                                        g_array_event(l_event_id).array_value_num('header_index'));
31648       --
31649       --
31650 
31651       -- No reversal code generated
31652 
31653       xla_ae_lines_pkg.SetAcctReversalAttrs
31654          (p_event_id             => l_event_id
31655          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
31656          ,p_calculate_acctd_flag => l_calculate_acctd_flag
31657          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
31658    END IF;
31659 
31660    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
31661        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
31662 
31663 --
31664 AcctLineType_21 (
31665  p_application_id  => p_application_id
31666  ,p_event_id     => l_event_id
31667  ,p_calculate_acctd_flag => l_calculate_acctd_flag
31668  ,p_calculate_g_l_flag => l_calculate_g_l_flag
31669  ,p_actual_flag => l_actual_flag
31670  ,p_balance_type_code => l_balance_type_code
31671  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
31672  
31673  , p_source_8 => l_array_source_8(Idx)
31674  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
31675  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
31676  , p_source_11 => g_array_event(l_event_id).array_value_char('source_11')
31677  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
31678  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
31679  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
31680  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
31681  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
31682  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
31683  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
31684  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
31685  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
31686  , p_source_29 => l_array_source_29(Idx)
31687  , p_source_30 => g_array_event(l_event_id).array_value_num('source_30')
31688  , p_source_32 => g_array_event(l_event_id).array_value_char('source_32')
31689  );
31690 If(l_balance_type_code = 'A') THEN
31691   l_actual_gain_loss_ref := l_gain_or_loss_ref;
31692 END IF;
31693 
31694 --
31695 
31696       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
31697       -- or secondary ledger that has different currency with primary
31698       -- or alc that is calculated by sla
31699       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
31700             (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'))
31701 
31702 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
31703 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
31704           AND (l_actual_flag = 'A')) THEN
31705         XLA_AE_LINES_PKG.CreateGainOrLossLines(
31706           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
31707          ,p_application_id   => p_application_id
31708          ,p_amb_context_code => 'DEFAULT'
31709          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
31710          ,p_event_class_code => C_EVENT_CLASS_CODE
31711          ,p_event_type_code  => C_EVENT_TYPE_CODE
31712          
31713          ,p_gain_ccid        => -1
31714          ,p_loss_ccid        => -1
31715 
31716          ,p_actual_flag      => l_actual_flag
31717          ,p_enc_flag         => null
31718          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
31719          ,p_enc_g_l_ref      => null
31720          );
31721       END IF;
31722    END IF;
31723 END IF;
31724 
31725    ELSE
31726       --
31727       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
31728       --
31729       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31730          trace
31731             (p_msg      => 'Trancaction revesal option is Y'
31732             ,p_level    => C_LEVEL_STATEMENT
31733             ,p_module   => l_log_module);
31734       END IF;
31735    END IF;
31736 
31737 END LOOP;
31738 l_result := XLA_AE_LINES_PKG.InsertLines ;
31739 end loop;
31740 close line_cur;
31741 
31742 
31743 --
31744 -- insert headers into xla_ae_headers_gt table
31745 --
31746 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
31747 
31748 -- insert into errors table here.
31749 
31750 END LOOP;
31751 
31752 --
31753 -- 4865292
31754 --
31755 -- Compare g_hdr_extract_count with event count in
31756 -- CreateHeadersAndLines.
31757 --
31758 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
31759 
31760 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31761    trace (p_msg     => '# rows extracted from header extract objects '
31762                     || ' (running total): '
31763                     || g_hdr_extract_count
31764          ,p_level   => C_LEVEL_STATEMENT
31765          ,p_module  => l_log_module);
31766 END IF;
31767 
31768 CLOSE header_cur;
31769 --
31770 
31771 --
31772 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31773    trace
31774       (p_msg      => 'END of EventClass_40'
31775       ,p_level    => C_LEVEL_PROCEDURE
31776       ,p_module   => l_log_module);
31777 END IF;
31778 --
31779 RETURN l_result;
31780 EXCEPTION
31781 WHEN xla_exceptions_pkg.application_exception THEN
31782    
31783 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
31784 
31785    
31786 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
31787 
31788    RAISE;
31789 
31790 WHEN NO_DATA_FOUND THEN
31791 
31792 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
31793 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
31794 
31795 FOR header_record IN header_cur
31796 LOOP
31797     l_array_header_events(header_record.event_id) := header_record.event_id;
31798 END LOOP;
31799 
31800 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
31801 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
31802 
31803 fnd_file.put_line(fnd_file.LOG, '                    ');
31804 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
31805 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
31806 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
31807 
31808 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
31809 LOOP
31810 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
31811 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
31812         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
31813 	END IF;
31814 END LOOP;
31815 
31816 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
31817 fnd_file.put_line(fnd_file.LOG, '                    ');
31818 
31819 
31820 xla_exceptions_pkg.raise_message
31821       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventClass_40');
31822 
31823 
31824 WHEN OTHERS THEN
31825    xla_exceptions_pkg.raise_message
31826       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventClass_40');
31827 END EventClass_40;
31828 --
31829 
31830 ---------------------------------------
31831 --
31832 -- PRIVATE PROCEDURE
31833 --         insert_sources_41
31834 --
31835 ----------------------------------------
31836 --
31837 PROCEDURE insert_sources_41(
31838                                 p_target_ledger_id       IN NUMBER
31839                               , p_language               IN VARCHAR2
31840                               , p_sla_ledger_id          IN NUMBER
31841                               , p_pad_start_date         IN DATE
31842                               , p_pad_end_date           IN DATE
31843                          )
31844 IS
31845 
31846 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_DEL_ADJ';
31847 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
31848 p_apps_owner                   VARCHAR2(30);
31849 l_log_module                   VARCHAR2(240);
31850 BEGIN
31851 IF g_log_enabled THEN
31852       l_log_module := C_DEFAULT_MODULE||'.insert_sources_41';
31853 END IF;
31854 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31855 
31856       trace
31857          (p_msg      => 'BEGIN of insert_sources_41'
31858          ,p_level    => C_LEVEL_PROCEDURE
31859          ,p_module   => l_log_module);
31860 
31861 END IF;
31862 
31863 -- select APPS owner
31864 SELECT oracle_username
31865   INTO p_apps_owner
31866   FROM fnd_oracle_userid
31867  WHERE read_only_flag = 'U'
31868 ;
31869 
31870 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
31871       trace
31872          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
31873                         ' - p_language = '||p_language||
31874                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
31875                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
31876                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
31877                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
31878          ,p_level    => C_LEVEL_STATEMENT
31879          ,p_module   => l_log_module);
31880 END IF;
31881 
31882 
31883 --
31884 INSERT INTO xla_diag_sources --hdr1
31885 (
31886         event_id
31887       , ledger_id
31888       , sla_ledger_id
31889       , description_language
31890       , object_name
31891       , object_type_code
31892       , line_number
31893       , source_application_id
31894       , source_type_code
31895       , source_code
31896       , source_value
31897       , source_meaning
31898       , created_by
31899       , creation_date
31900       , last_update_date
31901       , last_updated_by
31902       , last_update_login
31903       , program_update_date
31904       , program_application_id
31905       , program_id
31906       , request_id
31907 )
31908 SELECT
31909         event_id
31910       , p_target_ledger_id
31911       , p_sla_ledger_id
31912       , p_language
31913       , object_name
31914       , object_type_code
31915       , line_number
31916       , source_application_id
31917       , source_type_code
31918       , source_code
31919       , SUBSTR(source_value ,1,1996)
31920       , SUBSTR(source_meaning,1,200)
31921       , xla_environment_pkg.g_Usr_Id
31922       , TRUNC(SYSDATE)
31923       , TRUNC(SYSDATE)
31924       , xla_environment_pkg.g_Usr_Id
31925       , xla_environment_pkg.g_Login_Id
31926       , TRUNC(SYSDATE)
31927       , xla_environment_pkg.g_Prog_Appl_Id
31928       , xla_environment_pkg.g_Prog_Id
31929       , xla_environment_pkg.g_Req_Id
31930   FROM (
31931        SELECT xet.event_id                  event_id
31932             , 0                             line_number
31933             , CASE r
31934                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
31935                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
31936                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
31937                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
31938                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
31939                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
31940                 WHEN 7 THEN 'PO_HEADERS_REF_V' 
31941                 WHEN 8 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
31942                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
31943                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
31944                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
31945                 WHEN 12 THEN 'CST_XLA_INV_REF_V' 
31946                 WHEN 13 THEN 'CST_XLA_INV_REF_V' 
31947                 WHEN 14 THEN 'PO_DISTS_REF_V' 
31948                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
31949                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
31950                 WHEN 17 THEN 'PSA_CST_XLA_UPG_V' 
31951                 WHEN 18 THEN 'PO_HEADERS_REF_V' 
31952                 WHEN 19 THEN 'PO_DISTS_REF_V' 
31953                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
31954                 
31955                ELSE null
31956               END                           object_name
31957             , CASE r
31958                 WHEN 1 THEN 'HEADER' 
31959                 WHEN 2 THEN 'HEADER' 
31960                 WHEN 3 THEN 'HEADER' 
31961                 WHEN 4 THEN 'HEADER' 
31962                 WHEN 5 THEN 'HEADER' 
31963                 WHEN 6 THEN 'HEADER' 
31964                 WHEN 7 THEN 'HEADER' 
31965                 WHEN 8 THEN 'HEADER' 
31966                 WHEN 9 THEN 'HEADER' 
31967                 WHEN 10 THEN 'HEADER' 
31968                 WHEN 11 THEN 'HEADER' 
31969                 WHEN 12 THEN 'HEADER' 
31970                 WHEN 13 THEN 'HEADER' 
31971                 WHEN 14 THEN 'HEADER' 
31972                 WHEN 15 THEN 'HEADER' 
31973                 WHEN 16 THEN 'HEADER' 
31974                 WHEN 17 THEN 'HEADER' 
31975                 WHEN 18 THEN 'HEADER' 
31976                 WHEN 19 THEN 'HEADER' 
31977                 WHEN 20 THEN 'HEADER' 
31978                 
31979                 ELSE null
31980               END                           object_type_code
31981             , CASE r
31982                 WHEN 1 THEN '707' 
31983                 WHEN 2 THEN '707' 
31984                 WHEN 3 THEN '707' 
31985                 WHEN 4 THEN '707' 
31986                 WHEN 5 THEN '707' 
31987                 WHEN 6 THEN '707' 
31988                 WHEN 7 THEN '201' 
31989                 WHEN 8 THEN '707' 
31990                 WHEN 9 THEN '707' 
31991                 WHEN 10 THEN '707' 
31992                 WHEN 11 THEN '707' 
31993                 WHEN 12 THEN '707' 
31994                 WHEN 13 THEN '707' 
31995                 WHEN 14 THEN '201' 
31996                 WHEN 15 THEN '707' 
31997                 WHEN 16 THEN '707' 
31998                 WHEN 17 THEN '707' 
31999                 WHEN 18 THEN '201' 
32000                 WHEN 19 THEN '201' 
32001                 WHEN 20 THEN '707' 
32002                 
32003                 ELSE null
32004               END                           source_application_id
32005             , 'S'             source_type_code
32006             , CASE r
32007                 WHEN 1 THEN 'TRANSACTION_ID' 
32008                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
32009                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
32010                 WHEN 4 THEN 'TRANSACTION_UOM' 
32011                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
32012                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
32013                 WHEN 7 THEN 'PURCH_ENCUMBRANCE_FLAG' 
32014                 WHEN 8 THEN 'ENCUMBRANCE_REVERSAL_FLAG' 
32015                 WHEN 9 THEN 'APPLIED_TO_APPL_ID' 
32016                 WHEN 10 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
32017                 WHEN 11 THEN 'APPLIED_TO_ENTITY_CODE' 
32018                 WHEN 12 THEN 'TXN_PO_DISTRIBUTION_ID' 
32019                 WHEN 13 THEN 'APPLIED_TO_PO_DOC_ID' 
32020                 WHEN 14 THEN 'PO_BUDGET_ACCOUNT' 
32021                 WHEN 15 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
32022                 WHEN 16 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
32023                 WHEN 17 THEN 'CST_ENCUM_UPG_OPTION' 
32024                 WHEN 18 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
32025                 WHEN 19 THEN 'RESERVED_FLAG' 
32026                 WHEN 20 THEN 'TRANSFER_TO_GL_INDICATOR' 
32027                 
32028                 ELSE null
32029               END                           source_code
32030             , CASE r
32031                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
32032                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
32033                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
32034                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
32035                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
32036                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
32037                 WHEN 7 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_FLAG)
32038                 WHEN 8 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_FLAG)
32039                 WHEN 9 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
32040                 WHEN 10 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
32041                 WHEN 11 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
32042                 WHEN 12 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
32043                 WHEN 13 THEN TO_CHAR(h4.APPLIED_TO_PO_DOC_ID)
32044                 WHEN 14 THEN TO_CHAR(h7.PO_BUDGET_ACCOUNT)
32045                 WHEN 15 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
32046                 WHEN 16 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
32047                 WHEN 17 THEN TO_CHAR(h9.CST_ENCUM_UPG_OPTION)
32048                 WHEN 18 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_TYPE_ID)
32049                 WHEN 19 THEN TO_CHAR(h7.RESERVED_FLAG)
32050                 WHEN 20 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
32051                 
32052                 ELSE null
32053               END                           source_value
32054             , CASE r
32055                 WHEN 6 THEN fvl9.meaning
32056                 WHEN 20 THEN fvl42.meaning
32057                 
32058                 ELSE null
32059               END               source_meaning
32060         FROM xla_events_gt     xet  
32061       , CST_XLA_INV_HEADERS_V  h1
32062       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
32063       , CST_XLA_INV_REF_V  h4
32064       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
32065       , CST_XLA_INV_TXN_TYPES_REF_V  h6
32066       , PO_DISTS_REF_V  h7
32067       , PO_HEADERS_REF_V  h8
32068       , PSA_CST_XLA_UPG_V  h9
32069   , fnd_lookup_values    fvl9
32070   , fnd_lookup_values    fvl42
32071             ,(select rownum r from all_objects where rownum <= 20 and owner = p_apps_owner)
32072        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
32073          AND xet.event_type_code = C_EVENT_TYPE_CODE
32074             AND h1.event_id = xet.event_id
32075  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id  (+) = h1.inventory_item_id  and h5.organization_id  (+) = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h4.txn_po_header_id = h7.po_header_id  (+)  and h4.txn_po_distribution_id = h7.po_distribution_id (+)  AND h4.txn_po_header_id = h8.po_header_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 
32076 'CST_DISTRIBUTION_TYPE'
32077   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
32078   AND fvl9.view_application_id(+) = 700
32079   AND fvl9.language(+)            = USERENV('LANG')
32080      AND fvl42.lookup_type(+)         = 'YES_NO'
32081   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
32082   AND fvl42.view_application_id(+) = 0
32083   AND fvl42.language(+)            = USERENV('LANG')
32084   
32085 )
32086 ;
32087 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32088 
32089       trace
32090          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
32091          ,p_level    => C_LEVEL_STATEMENT
32092          ,p_module   => l_log_module);
32093 
32094 END IF;
32095 --
32096 
32097 
32098 
32099 --
32100 INSERT INTO xla_diag_sources --line1
32101 (
32102         event_id
32103       , ledger_id
32104       , sla_ledger_id
32105       , description_language
32106       , object_name
32107       , object_type_code
32108       , line_number
32109       , source_application_id
32110       , source_type_code
32111       , source_code
32112       , source_value
32113       , source_meaning
32114       , created_by
32115       , creation_date
32116       , last_update_date
32117       , last_updated_by
32118       , last_update_login
32119       , program_update_date
32120       , program_application_id
32121       , program_id
32122       , request_id
32123 )
32124 SELECT  event_id
32125       , p_target_ledger_id
32126       , p_sla_ledger_id
32127       , p_language
32128       , object_name
32129       , object_type_code
32130       , line_number
32131       , source_application_id
32132       , source_type_code
32133       , source_code
32134       , SUBSTR(source_value,1,1996)
32135       , SUBSTR(source_meaning,1,200)
32136       , xla_environment_pkg.g_Usr_Id
32137       , TRUNC(SYSDATE)
32138       , TRUNC(SYSDATE)
32139       , xla_environment_pkg.g_Usr_Id
32140       , xla_environment_pkg.g_Login_Id
32141       , TRUNC(SYSDATE)
32142       , xla_environment_pkg.g_Prog_Appl_Id
32143       , xla_environment_pkg.g_Prog_Id
32144       , xla_environment_pkg.g_Req_Id
32145   FROM (
32146        SELECT xet.event_id                  event_id
32147             , l2.line_number                 line_number
32148             , CASE r
32149                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
32150                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
32151                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
32152                 
32153                ELSE null
32154               END                           object_name
32155             , CASE r
32156                 WHEN 1 THEN 'LINE' 
32157                 WHEN 2 THEN 'LINE' 
32158                 WHEN 3 THEN 'LINE' 
32159                 
32160                 ELSE null
32161               END                           object_type_code
32162             , CASE r
32163                 WHEN 1 THEN '707' 
32164                 WHEN 2 THEN '707' 
32165                 WHEN 3 THEN '707' 
32166                 
32167                 ELSE null
32168               END                           source_application_id
32169             , 'S'             source_type_code
32170             , CASE r
32171                 WHEN 1 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
32172                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
32173                 WHEN 3 THEN 'CURRENCY_CODE' 
32174                 
32175                 ELSE null
32176               END                           source_code
32177             , CASE r
32178                 WHEN 1 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
32179                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
32180                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
32181                 
32182                 ELSE null
32183               END                           source_value
32184             , null              source_meaning
32185          FROM  xla_events_gt     xet  
32186         , CST_XLA_INV_LINES_V  l2
32187             ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
32188         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
32189           AND xet.event_type_code = C_EVENT_TYPE_CODE
32190             AND l2.event_id          = xet.event_id
32191 
32192 )
32193 ;
32194 --
32195 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32196 
32197       trace
32198          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
32199          ,p_level    => C_LEVEL_STATEMENT
32200          ,p_module   => l_log_module);
32201 
32202 END IF;
32203 
32204 
32205 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32206       trace
32207          (p_msg      => 'END of insert_sources_41'
32208          ,p_level    => C_LEVEL_PROCEDURE
32209          ,p_module   => l_log_module);
32210 END IF;
32211 EXCEPTION
32212   WHEN xla_exceptions_pkg.application_exception THEN
32213       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
32214             trace
32215                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
32216                ,p_level    => C_LEVEL_EXCEPTION
32217                ,p_module   => l_log_module);
32218       END IF;
32219       RAISE;
32220   WHEN OTHERS THEN
32221       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
32222             trace
32223                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
32224                ,p_level    => C_LEVEL_EXCEPTION
32225                ,p_module   => l_log_module);
32226        END IF;
32227        xla_exceptions_pkg.raise_message
32228            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_41');
32229 END insert_sources_41;
32230 --
32231 
32232 ---------------------------------------
32233 --
32234 -- PRIVATE FUNCTION
32235 --         EventType_41
32236 --
32237 ----------------------------------------
32238 --
32239 FUNCTION EventType_41
32240        (p_application_id         IN NUMBER
32241        ,p_base_ledger_id         IN NUMBER
32242        ,p_target_ledger_id       IN NUMBER
32243        ,p_language               IN VARCHAR2
32244        ,p_currency_code          IN VARCHAR2
32245        ,p_sla_ledger_id          IN NUMBER
32246        ,p_pad_start_date         IN DATE
32247        ,p_pad_end_date           IN DATE
32248        ,p_primary_ledger_id      IN NUMBER)
32249 RETURN BOOLEAN IS
32250 --
32251 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_DEL_ADJ';
32252 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
32253 
32254 l_calculate_acctd_flag   VARCHAR2(1) :='N';
32255 l_calculate_g_l_flag     VARCHAR2(1) :='N';
32256 --
32257 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
32258 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
32259 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
32260 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
32261 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
32262 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
32263 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
32264 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
32265 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
32266 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
32267 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
32268 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
32269 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
32270 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
32271 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
32272 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
32273 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
32274 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
32275 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
32276 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
32277 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
32278 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
32279 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
32280 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
32281 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
32282 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
32283 
32284 l_event_id                             NUMBER;
32285 l_previous_event_id                    NUMBER;
32286 l_first_event_id                       NUMBER;
32287 l_last_event_id                        NUMBER;
32288 
32289 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
32290 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
32291 --
32292 --
32293 l_result                    BOOLEAN := TRUE;
32294 l_rows                      NUMBER  := 1000;
32295 l_event_type_name           VARCHAR2(80) := 'PO Delivery Adjustment';
32296 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
32297 l_description               VARCHAR2(4000);
32298 l_transaction_reversal      NUMBER;
32299 l_ae_header_id              NUMBER;
32300 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
32301 l_log_module                VARCHAR2(240);
32302 --
32303 l_acct_reversal_source      VARCHAR2(30);
32304 l_trx_reversal_source       VARCHAR2(30);
32305 
32306 l_continue_with_lines       BOOLEAN := TRUE;
32307 --
32308 l_acc_rev_gl_date_source    DATE;                      -- 4262811
32309 --
32310 type t_array_event_id is table of number index by binary_integer;
32311 
32312 l_rec_array_event                    t_rec_array_event;
32313 l_null_rec_array_event               t_rec_array_event;
32314 l_array_ae_header_id                 xla_number_array_type;
32315 l_actual_flag                        VARCHAR2(1) := NULL;
32316 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
32317 l_balance_type_code                  VARCHAR2(1) :=NULL;
32318 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
32319 
32320 --
32321 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
32322 --
32323 
32324 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
32325 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
32326 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
32327 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
32328 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
32329 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
32330 TYPE t_array_source_16 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
32331 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.ENCUMBRANCE_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
32332 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
32333 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
32334 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
32335 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
32336 TYPE t_array_source_23 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
32337 TYPE t_array_source_24 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
32338 TYPE t_array_source_25 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
32339 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
32340 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
32341 TYPE t_array_source_28 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
32342 TYPE t_array_source_31 IS TABLE OF PO_DISTS_REF_V.RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
32343 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
32344 
32345 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
32346 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
32347 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
32348 
32349 l_array_source_1              t_array_source_1;
32350 l_array_source_2              t_array_source_2;
32351 l_array_source_3              t_array_source_3;
32352 l_array_source_4              t_array_source_4;
32353 l_array_source_5              t_array_source_5;
32354 l_array_source_9              t_array_source_9;
32355 l_array_source_9_meaning      t_array_lookup_meaning;
32356 l_array_source_16              t_array_source_16;
32357 l_array_source_17              t_array_source_17;
32358 l_array_source_19              t_array_source_19;
32359 l_array_source_20              t_array_source_20;
32360 l_array_source_21              t_array_source_21;
32361 l_array_source_22              t_array_source_22;
32362 l_array_source_23              t_array_source_23;
32363 l_array_source_24              t_array_source_24;
32364 l_array_source_25              t_array_source_25;
32365 l_array_source_26              t_array_source_26;
32366 l_array_source_27              t_array_source_27;
32367 l_array_source_28              t_array_source_28;
32368 l_array_source_31              t_array_source_31;
32369 l_array_source_42              t_array_source_42;
32370 l_array_source_42_meaning      t_array_lookup_meaning;
32371 
32372 l_array_source_7      t_array_source_7;
32373 l_array_source_8      t_array_source_8;
32374 l_array_source_11      t_array_source_11;
32375 
32376 --
32377 CURSOR header_cur
32378 IS
32379 SELECT /*+ leading(xet) cardinality(xet,1) */
32380 -- Event Type Code: PO_DEL_ADJ
32381 -- Event Class Code: PURCHASE_ORDER
32382     xet.entity_id
32383   , xet.legal_entity_id
32384   , xet.entity_code
32385   , xet.transaction_number
32386   , xet.event_id
32387   , xet.event_class_code
32388   , xet.event_type_code
32389   , xet.event_number
32390   , xet.event_date
32391   , xet.transaction_date
32392   , xet.reference_num_1
32393   , xet.reference_num_2
32394   , xet.reference_num_3
32395   , xet.reference_num_4
32396   , xet.reference_char_1
32397   , xet.reference_char_2
32398   , xet.reference_char_3
32399   , xet.reference_char_4
32400   , xet.reference_date_1
32401   , xet.reference_date_2
32402   , xet.reference_date_3
32403   , xet.reference_date_4
32404   , xet.event_created_by
32405   , xet.budgetary_control_flag 
32406   , h1.TRANSACTION_ID    source_1
32407   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
32408   , h4.TRANSACTION_QUANTITY    source_3
32409   , h4.TRANSACTION_UOM    source_4
32410   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
32411   , h1.DISTRIBUTION_TYPE    source_9
32412   , fvl9.meaning   source_9_meaning
32413   , h8.PURCH_ENCUMBRANCE_FLAG    source_16
32414   , h3.ENCUMBRANCE_REVERSAL_FLAG    source_17
32415   , h4.APPLIED_TO_APPL_ID    source_19
32416   , h4.APPLIED_TO_DIST_LINK_TYPE    source_20
32417   , h4.APPLIED_TO_ENTITY_CODE    source_21
32418   , h4.TXN_PO_DISTRIBUTION_ID    source_22
32419   , h4.APPLIED_TO_PO_DOC_ID    source_23
32420   , h7.PO_BUDGET_ACCOUNT    source_24
32421   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_25
32422   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_26
32423   , h9.CST_ENCUM_UPG_OPTION    source_27
32424   , h8.PURCH_ENCUMBRANCE_TYPE_ID    source_28
32425   , h7.RESERVED_FLAG    source_31
32426   , h1.TRANSFER_TO_GL_INDICATOR    source_42
32427   , fvl42.meaning   source_42_meaning
32428   FROM xla_events_gt     xet 
32429   , CST_XLA_INV_HEADERS_V  h1
32430   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
32431   , CST_XLA_INV_REF_V  h4
32432   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
32433   , CST_XLA_INV_TXN_TYPES_REF_V  h6
32434   , PO_DISTS_REF_V  h7
32435   , PO_HEADERS_REF_V  h8
32436   , PSA_CST_XLA_UPG_V  h9
32437   , fnd_lookup_values    fvl9
32438   , fnd_lookup_values    fvl42
32439  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
32440    and xet.event_type_code = C_EVENT_TYPE_CODE
32441    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
32442  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h5.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h4.txn_po_header_id = h7.po_header_id  (+)  AND h4.txn_po_distribution_id = h7.po_distribution_id (+)  AND h4.txn_po_header_id = h8.po_header_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 
32443 'CST_DISTRIBUTION_TYPE'
32444   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
32445   AND fvl9.view_application_id(+) = 700
32446   AND fvl9.language(+)            = USERENV('LANG')
32447      AND fvl42.lookup_type(+)         = 'YES_NO'
32448   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
32449   AND fvl42.view_application_id(+) = 0
32450   AND fvl42.language(+)            = USERENV('LANG')
32451   
32452  ORDER BY event_id
32453 ;
32454 
32455 
32456 --
32457 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
32458 IS
32459 SELECT /*+ leading(xet) cardinality(xet,1) */
32460 -- Event Type Code: PO_DEL_ADJ
32461 -- Event Class Code: PURCHASE_ORDER
32462     xet.entity_id
32463    ,xet.legal_entity_id
32464    ,xet.entity_code
32465    ,xet.transaction_number
32466    ,xet.event_id
32467    ,xet.event_class_code
32468    ,xet.event_type_code
32469    ,xet.event_number
32470    ,xet.event_date
32471    ,xet.transaction_date
32472    ,xet.reference_num_1
32473    ,xet.reference_num_2
32474    ,xet.reference_num_3
32475    ,xet.reference_num_4
32476    ,xet.reference_char_1
32477    ,xet.reference_char_2
32478    ,xet.reference_char_3
32479    ,xet.reference_char_4
32480    ,xet.reference_date_1
32481    ,xet.reference_date_2
32482    ,xet.reference_date_3
32483    ,xet.reference_date_4
32484    ,xet.event_created_by
32485    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
32486   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
32487   , l2.DISTRIBUTION_IDENTIFIER    source_8
32488   , l2.CURRENCY_CODE    source_11
32489   FROM xla_events_gt     xet 
32490   , CST_XLA_INV_LINES_V  l2
32491  WHERE xet.event_id between x_first_event_id and x_last_event_id
32492    and xet.event_date between p_pad_start_date and p_pad_end_date
32493    and xet.event_type_code = C_EVENT_TYPE_CODE
32494    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
32495 ;
32496 
32497 --
32498 BEGIN
32499 IF g_log_enabled THEN
32500    l_log_module := C_DEFAULT_MODULE||'.EventType_41';
32501 END IF;
32502 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32503    trace
32504       (p_msg      => 'BEGIN of EventType_41'
32505       ,p_level    => C_LEVEL_PROCEDURE
32506       ,p_module   => l_log_module);
32507 END IF;
32508 
32509 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32510    trace
32511       (p_msg      => 'p_application_id = '||p_application_id||
32512                      ' - p_base_ledger_id = '||p_base_ledger_id||
32513                      ' - p_target_ledger_id  = '||p_target_ledger_id||
32514                      ' - p_language = '||p_language||
32515                      ' - p_currency_code = '||p_currency_code||
32516                      ' - p_sla_ledger_id = '||p_sla_ledger_id
32517       ,p_level    => C_LEVEL_STATEMENT
32518       ,p_module   => l_log_module);
32519 END IF;
32520 --
32521 -- initialze arrays
32522 --
32523 g_array_event.DELETE;
32524 l_rec_array_event := l_null_rec_array_event;
32525 --
32526 --------------------------------------
32527 -- 4262811 Initialze MPA Line Number
32528 --------------------------------------
32529 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
32530 
32531 --
32532 
32533 --
32534 OPEN header_cur;
32535 --
32536 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32537    trace
32538    (p_msg      => 'SQL - FETCH header_cur'
32539    ,p_level    => C_LEVEL_STATEMENT
32540    ,p_module   => l_log_module);
32541 END IF;
32542 --
32543 LOOP
32544 FETCH header_cur BULK COLLECT INTO
32545         l_array_entity_id
32546       , l_array_legal_entity_id
32547       , l_array_entity_code
32548       , l_array_transaction_num
32549       , l_array_event_id
32550       , l_array_class_code
32551       , l_array_event_type
32552       , l_array_event_number
32553       , l_array_event_date
32554       , l_array_transaction_date
32555       , l_array_reference_num_1
32556       , l_array_reference_num_2
32557       , l_array_reference_num_3
32558       , l_array_reference_num_4
32559       , l_array_reference_char_1
32560       , l_array_reference_char_2
32561       , l_array_reference_char_3
32562       , l_array_reference_char_4
32563       , l_array_reference_date_1
32564       , l_array_reference_date_2
32565       , l_array_reference_date_3
32566       , l_array_reference_date_4
32567       , l_array_event_created_by
32568       , l_array_budgetary_control_flag 
32569       , l_array_source_1
32570       , l_array_source_2
32571       , l_array_source_3
32572       , l_array_source_4
32573       , l_array_source_5
32574       , l_array_source_9
32575       , l_array_source_9_meaning
32576       , l_array_source_16
32577       , l_array_source_17
32578       , l_array_source_19
32579       , l_array_source_20
32580       , l_array_source_21
32581       , l_array_source_22
32582       , l_array_source_23
32583       , l_array_source_24
32584       , l_array_source_25
32585       , l_array_source_26
32586       , l_array_source_27
32587       , l_array_source_28
32588       , l_array_source_31
32589       , l_array_source_42
32590       , l_array_source_42_meaning
32591       LIMIT l_rows;
32592 --
32593 IF (C_LEVEL_EVENT >= g_log_level) THEN
32594    trace
32595    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
32596    ,p_level    => C_LEVEL_EVENT
32597    ,p_module   => l_log_module);
32598 END IF;
32599 --
32600 EXIT WHEN l_array_entity_id.COUNT = 0;
32601 
32602 -- initialize arrays
32603 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
32604 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
32605 
32606 --
32607 -- Bug 4458708
32608 --
32609 XLA_AE_LINES_PKG.g_LineNumber := 0;
32610 
32611 
32612 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
32613 g_last_hdr_idx := l_array_event_id.LAST;
32614 --
32615 -- loop for the headers. Each iteration is for each header extract row
32616 -- fetched in header cursor
32617 --
32618 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
32619 
32620 --
32621 -- set event info as cache for other routines to refer event attributes
32622 --
32623 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
32624    (p_application_id           => p_application_id
32625    ,p_primary_ledger_id        => p_primary_ledger_id
32626    ,p_base_ledger_id           => p_base_ledger_id
32627    ,p_target_ledger_id         => p_target_ledger_id
32628    ,p_entity_id                => l_array_entity_id(hdr_idx)
32629    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
32630    ,p_entity_code              => l_array_entity_code(hdr_idx)
32631    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
32632    ,p_event_id                 => l_array_event_id(hdr_idx)
32633    ,p_event_class_code         => l_array_class_code(hdr_idx)
32634    ,p_event_type_code          => l_array_event_type(hdr_idx)
32635    ,p_event_number             => l_array_event_number(hdr_idx)
32636    ,p_event_date               => l_array_event_date(hdr_idx)
32637    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
32638    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
32639    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
32640    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
32641    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
32642    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
32643    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
32644    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
32645    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
32646    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
32647    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
32648    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
32649    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
32650    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
32651    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
32652 
32653 --
32654 -- set the status of entry to C_VALID (0)
32655 --
32656 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
32657 
32658 --
32659 -- initialize a row for ae header
32660 --
32661 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
32662 
32663 l_event_id := l_array_event_id(hdr_idx);
32664 
32665 --
32666 -- storing the hdr_idx for event. May be used by line cursor.
32667 --
32668 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
32669 
32670 --
32671 -- store sources from header extract. This can be improved to
32672 -- store only those sources from header extract that may be used in lines
32673 --
32674 
32675 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
32676 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
32677 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
32678 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
32679 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
32680 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
32681 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
32682 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
32683 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
32684 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
32685 g_array_event(l_event_id).array_value_char('source_20') := l_array_source_20(hdr_idx);
32686 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
32687 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
32688 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
32689 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
32690 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
32691 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
32692 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
32693 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
32694 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
32695 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
32696 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
32697 
32698 --
32699 -- initilaize the status of ae headers for diffrent balance types
32700 -- the status is initialised to C_NOT_CREATED (2)
32701 --
32702 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
32703 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
32704 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
32705 
32706 --
32707 -- call api to validate and store accounting attributes for header
32708 --
32709 
32710 ------------------------------------------------------------
32711 -- Accrual Reversal : to get date for Standard Source (NONE)
32712 ------------------------------------------------------------
32713 l_acc_rev_gl_date_source := NULL;
32714 
32715      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
32716       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_28');
32717      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
32718       l_rec_acct_attrs.array_date_value(2) := 
32719 xla_ae_sources_pkg.GetSystemSourceDate(
32720    p_source_code           => 'XLA_REFERENCE_DATE_1'
32721  , p_source_type_code      => 'Y'
32722  , p_source_application_id =>  602
32723 );
32724      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
32725       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_42');
32726 
32727 
32728 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
32729 
32730 XLA_AE_HEADER_PKG.SetJeCategoryName;
32731 
32732 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
32733 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
32734 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
32735 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
32736 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
32737 
32738 
32739 --
32740 xla_ae_header_pkg.SetHdrDescription(
32741    p_description => Description_1 (
32742    p_application_id => p_application_id 
32743  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
32744  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
32745  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
32746  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
32747  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
32748    )
32749 );
32750 --
32751 
32752 -- No header level analytical criteria
32753 
32754 --
32755 --accounting attribute enhancement, bug 3612931
32756 --
32757 l_trx_reversal_source := SUBSTR(NULL, 1,30);
32758 
32759 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
32760    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
32761 
32762    xla_accounting_err_pkg.build_message
32763       (p_appli_s_name            => 'XLA'
32764       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
32765       ,p_token_1                 => 'ACCT_ATTR_NAME'
32766       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
32767       ,p_token_2                 => 'PRODUCT_NAME'
32768       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
32769       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
32770       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
32771       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
32772 
32773 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
32774    --
32775    -- following sets the accounting attributes needed to reverse
32776    -- accounting for a distributeion
32777    --
32778    xla_ae_lines_pkg.SetTrxReversalAttrs
32779       (p_event_id              => l_event_id
32780       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
32781       ,p_trx_reversal_source   => l_trx_reversal_source);
32782 
32783 END IF;
32784 
32785 
32786 ----------------------------------------------------------------
32787 -- 4262811 -  update the header statuses to invalid in need be
32788 ----------------------------------------------------------------
32789 --
32790 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
32791 
32792 
32793   -----------------------------------------------
32794   -- No accrual reversal for the event class/type
32795   -----------------------------------------------
32796 ----------------------------------------------------------------
32797 
32798 --
32799 -- this ends the header loop iteration for one bulk fetch
32800 --
32801 END LOOP;
32802 
32803 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
32804 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
32805 
32806 --
32807 -- insert dummy rows into lines gt table that were created due to
32808 -- transaction reversals
32809 --
32810 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
32811    l_result := XLA_AE_LINES_PKG.InsertLines;
32812 END IF;
32813 
32814 --
32815 -- reset the temp_line_num for each set of events fetched from header
32816 -- cursor rather than doing it for each new event in line cursor
32817 -- Bug 3939231
32818 --
32819 xla_ae_lines_pkg.g_temp_line_num := 0;
32820 
32821 
32822 
32823 --
32824 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
32825 --
32826 --
32827 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32828 
32829       trace
32830          (p_msg      => 'SQL - FETCH line_cur'
32831          ,p_level    => C_LEVEL_STATEMENT
32832          ,p_module   => l_log_module);
32833 
32834 END IF;
32835 --
32836 --
32837 LOOP
32838   --
32839   FETCH line_cur BULK COLLECT INTO
32840         l_array_entity_id
32841       , l_array_legal_entity_id
32842       , l_array_entity_code
32843       , l_array_transaction_num
32844       , l_array_event_id
32845       , l_array_class_code
32846       , l_array_event_type
32847       , l_array_event_number
32848       , l_array_event_date
32849       , l_array_transaction_date
32850       , l_array_reference_num_1
32851       , l_array_reference_num_2
32852       , l_array_reference_num_3
32853       , l_array_reference_num_4
32854       , l_array_reference_char_1
32855       , l_array_reference_char_2
32856       , l_array_reference_char_3
32857       , l_array_reference_char_4
32858       , l_array_reference_date_1
32859       , l_array_reference_date_2
32860       , l_array_reference_date_3
32861       , l_array_reference_date_4
32862       , l_array_event_created_by
32863       , l_array_budgetary_control_flag
32864       , l_array_extract_line_num 
32865       , l_array_source_7
32866       , l_array_source_8
32867       , l_array_source_11
32868       LIMIT l_rows;
32869 
32870   --
32871   IF (C_LEVEL_EVENT >= g_log_level) THEN
32872             trace
32873                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
32874                ,p_level    => C_LEVEL_EVENT
32875                ,p_module   => l_log_module);
32876   END IF;
32877   --
32878   EXIT WHEN l_array_entity_id.count = 0;
32879 
32880   XLA_AE_LINES_PKG.g_rec_lines := null;
32881 
32882 --
32883 -- Bug 4458708
32884 --
32885 XLA_AE_LINES_PKG.g_LineNumber := 0;
32886 --
32887 --
32888 
32889 FOR Idx IN 1..l_array_event_id.count LOOP
32890    --
32891    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
32892    --
32893    l_event_id := l_array_event_id(idx);  -- 5648433
32894 
32895    --
32896    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
32897    --
32898 
32899    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
32900              (g_array_event(l_event_id).array_value_num('header_index'))
32901          ,'N'
32902          ) <> 'Y'
32903    THEN
32904       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
32905          trace
32906             (p_msg      => 'Trancaction revesal option is not Y '
32907             ,p_level    => C_LEVEL_STATEMENT
32908             ,p_module   => l_log_module);
32909       END IF;
32910 
32911 --
32912 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
32913 --
32914 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
32915 --
32916 -- set event info as cache for other routines to refer event attributes
32917 --
32918 
32919 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
32920    l_previous_event_id := l_event_id;
32921 
32922    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
32923       (p_application_id           => p_application_id
32924       ,p_primary_ledger_id        => p_primary_ledger_id
32925       ,p_base_ledger_id           => p_base_ledger_id
32926       ,p_target_ledger_id         => p_target_ledger_id
32927       ,p_entity_id                => l_array_entity_id(Idx)
32928       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
32929       ,p_entity_code              => l_array_entity_code(Idx)
32930       ,p_transaction_num          => l_array_transaction_num(Idx)
32931       ,p_event_id                 => l_array_event_id(Idx)
32932       ,p_event_class_code         => l_array_class_code(Idx)
32933       ,p_event_type_code          => l_array_event_type(Idx)
32934       ,p_event_number             => l_array_event_number(Idx)
32935       ,p_event_date               => l_array_event_date(Idx)
32936       ,p_transaction_date         => l_array_transaction_date(Idx)
32937       ,p_reference_num_1          => l_array_reference_num_1(Idx)
32938       ,p_reference_num_2          => l_array_reference_num_2(Idx)
32939       ,p_reference_num_3          => l_array_reference_num_3(Idx)
32940       ,p_reference_num_4          => l_array_reference_num_4(Idx)
32941       ,p_reference_char_1         => l_array_reference_char_1(Idx)
32942       ,p_reference_char_2         => l_array_reference_char_2(Idx)
32943       ,p_reference_char_3         => l_array_reference_char_3(Idx)
32944       ,p_reference_char_4         => l_array_reference_char_4(Idx)
32945       ,p_reference_date_1         => l_array_reference_date_1(Idx)
32946       ,p_reference_date_2         => l_array_reference_date_2(Idx)
32947       ,p_reference_date_3         => l_array_reference_date_3(Idx)
32948       ,p_reference_date_4         => l_array_reference_date_4(Idx)
32949       ,p_event_created_by         => l_array_event_created_by(Idx)
32950       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
32951        --
32952 END IF;
32953 
32954 
32955 
32956 --
32957 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
32958 
32959 l_acct_reversal_source := SUBSTR(NULL, 1,30);
32960 
32961 IF l_continue_with_lines THEN
32962    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
32963       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
32964 
32965       xla_accounting_err_pkg.build_message
32966          (p_appli_s_name            => 'XLA'
32967          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
32968          ,p_token_1                 => 'LINE_NUMBER'
32969          ,p_value_1                 => l_array_extract_line_num(Idx)
32970          ,p_token_2                 => 'PRODUCT_NAME'
32971          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
32972          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
32973          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
32974          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
32975 
32976    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
32977       --
32978       -- following sets the accounting attributes needed to reverse
32979       -- accounting for a distributeion
32980       --
32981 
32982       --
32983       -- 5217187
32984       --
32985       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
32986       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
32987                                        g_array_event(l_event_id).array_value_num('header_index'));
32988       --
32989       --
32990 
32991       -- No reversal code generated
32992 
32993       xla_ae_lines_pkg.SetAcctReversalAttrs
32994          (p_event_id             => l_event_id
32995          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
32996          ,p_calculate_acctd_flag => l_calculate_acctd_flag
32997          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
32998    END IF;
32999 
33000    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
33001        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
33002 
33003 --
33004 AcctLineType_8 (
33005  p_application_id  => p_application_id
33006  ,p_event_id     => l_event_id
33007  ,p_calculate_acctd_flag => l_calculate_acctd_flag
33008  ,p_calculate_g_l_flag => l_calculate_g_l_flag
33009  ,p_actual_flag => l_actual_flag
33010  ,p_balance_type_code => l_balance_type_code
33011  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
33012  
33013  , p_source_8 => l_array_source_8(Idx)
33014  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
33015  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
33016  , p_source_11 => l_array_source_11(Idx)
33017  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
33018  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
33019  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
33020  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
33021  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
33022  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
33023  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
33024  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
33025  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
33026  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
33027  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
33028  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
33029  );
33030 If(l_balance_type_code = 'A') THEN
33031   l_actual_gain_loss_ref := l_gain_or_loss_ref;
33032 END IF;
33033 
33034 --
33035 
33036 
33037 --
33038 AcctLineType_15 (
33039  p_application_id  => p_application_id
33040  ,p_event_id     => l_event_id
33041  ,p_calculate_acctd_flag => l_calculate_acctd_flag
33042  ,p_calculate_g_l_flag => l_calculate_g_l_flag
33043  ,p_actual_flag => l_actual_flag
33044  ,p_balance_type_code => l_balance_type_code
33045  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
33046  
33047  , p_source_7 => l_array_source_7(Idx)
33048  , p_source_8 => l_array_source_8(Idx)
33049  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
33050  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
33051  , p_source_11 => l_array_source_11(Idx)
33052  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
33053  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
33054  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
33055  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
33056  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
33057  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
33058  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
33059  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
33060  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
33061  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
33062  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
33063  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
33064  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
33065  );
33066 If(l_balance_type_code = 'A') THEN
33067   l_actual_gain_loss_ref := l_gain_or_loss_ref;
33068 END IF;
33069 
33070 --
33071 
33072       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
33073       -- or secondary ledger that has different currency with primary
33074       -- or alc that is calculated by sla
33075       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
33076             (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'))
33077 
33078 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
33079 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
33080           AND (l_actual_flag = 'A')) THEN
33081         XLA_AE_LINES_PKG.CreateGainOrLossLines(
33082           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
33083          ,p_application_id   => p_application_id
33084          ,p_amb_context_code => 'DEFAULT'
33085          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
33086          ,p_event_class_code => C_EVENT_CLASS_CODE
33087          ,p_event_type_code  => C_EVENT_TYPE_CODE
33088          
33089          ,p_gain_ccid        => -1
33090          ,p_loss_ccid        => -1
33091 
33092          ,p_actual_flag      => l_actual_flag
33093          ,p_enc_flag         => null
33094          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
33095          ,p_enc_g_l_ref      => null
33096          );
33097       END IF;
33098    END IF;
33099 END IF;
33100 
33101    ELSE
33102       --
33103       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
33104       --
33105       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
33106          trace
33107             (p_msg      => 'Trancaction revesal option is Y'
33108             ,p_level    => C_LEVEL_STATEMENT
33109             ,p_module   => l_log_module);
33110       END IF;
33111    END IF;
33112 
33113 END LOOP;
33114 l_result := XLA_AE_LINES_PKG.InsertLines ;
33115 end loop;
33116 close line_cur;
33117 
33118 
33119 --
33120 -- insert headers into xla_ae_headers_gt table
33121 --
33122 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
33123 
33124 -- insert into errors table here.
33125 
33126 END LOOP;
33127 
33128 --
33129 -- 4865292
33130 --
33131 -- Compare g_hdr_extract_count with event count in
33132 -- CreateHeadersAndLines.
33133 --
33134 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
33135 
33136 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
33137    trace (p_msg     => '# rows extracted from header extract objects '
33138                     || ' (running total): '
33139                     || g_hdr_extract_count
33140          ,p_level   => C_LEVEL_STATEMENT
33141          ,p_module  => l_log_module);
33142 END IF;
33143 
33144 CLOSE header_cur;
33145 --
33146 
33147 --
33148 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33149    trace
33150       (p_msg      => 'END of EventType_41'
33151       ,p_level    => C_LEVEL_PROCEDURE
33152       ,p_module   => l_log_module);
33153 END IF;
33154 --
33155 RETURN l_result;
33156 EXCEPTION
33157 WHEN xla_exceptions_pkg.application_exception THEN
33158    
33159 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
33160 
33161    
33162 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
33163 
33164    RAISE;
33165 
33166 WHEN NO_DATA_FOUND THEN
33167 
33168 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
33169 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
33170 
33171 FOR header_record IN header_cur
33172 LOOP
33173     l_array_header_events(header_record.event_id) := header_record.event_id;
33174 END LOOP;
33175 
33176 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
33177 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
33178 
33179 fnd_file.put_line(fnd_file.LOG, '                    ');
33180 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
33181 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
33182 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
33183 
33184 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
33185 LOOP
33186 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
33187 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
33188         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
33189 	END IF;
33190 END LOOP;
33191 
33192 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
33193 fnd_file.put_line(fnd_file.LOG, '                    ');
33194 
33195 
33196 xla_exceptions_pkg.raise_message
33197       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_41');
33198 
33199 
33200 WHEN OTHERS THEN
33201    xla_exceptions_pkg.raise_message
33202       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_41');
33203 END EventType_41;
33204 --
33205 
33206 ---------------------------------------
33207 --
33208 -- PRIVATE PROCEDURE
33209 --         insert_sources_42
33210 --
33211 ----------------------------------------
33212 --
33213 PROCEDURE insert_sources_42(
33214                                 p_target_ledger_id       IN NUMBER
33215                               , p_language               IN VARCHAR2
33216                               , p_sla_ledger_id          IN NUMBER
33217                               , p_pad_start_date         IN DATE
33218                               , p_pad_end_date           IN DATE
33219                          )
33220 IS
33221 
33222 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_DEL_INV';
33223 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
33224 p_apps_owner                   VARCHAR2(30);
33225 l_log_module                   VARCHAR2(240);
33226 BEGIN
33227 IF g_log_enabled THEN
33228       l_log_module := C_DEFAULT_MODULE||'.insert_sources_42';
33229 END IF;
33230 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33231 
33232       trace
33233          (p_msg      => 'BEGIN of insert_sources_42'
33234          ,p_level    => C_LEVEL_PROCEDURE
33235          ,p_module   => l_log_module);
33236 
33237 END IF;
33238 
33239 -- select APPS owner
33240 SELECT oracle_username
33241   INTO p_apps_owner
33242   FROM fnd_oracle_userid
33243  WHERE read_only_flag = 'U'
33244 ;
33245 
33246 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
33247       trace
33248          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
33249                         ' - p_language = '||p_language||
33250                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
33251                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
33252                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
33253                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
33254          ,p_level    => C_LEVEL_STATEMENT
33255          ,p_module   => l_log_module);
33256 END IF;
33257 
33258 
33259 --
33260 INSERT INTO xla_diag_sources --hdr1
33261 (
33262         event_id
33263       , ledger_id
33264       , sla_ledger_id
33265       , description_language
33266       , object_name
33267       , object_type_code
33268       , line_number
33269       , source_application_id
33270       , source_type_code
33271       , source_code
33272       , source_value
33273       , source_meaning
33274       , created_by
33275       , creation_date
33276       , last_update_date
33277       , last_updated_by
33278       , last_update_login
33279       , program_update_date
33280       , program_application_id
33281       , program_id
33282       , request_id
33283 )
33284 SELECT
33285         event_id
33286       , p_target_ledger_id
33287       , p_sla_ledger_id
33288       , p_language
33289       , object_name
33290       , object_type_code
33291       , line_number
33292       , source_application_id
33293       , source_type_code
33294       , source_code
33295       , SUBSTR(source_value ,1,1996)
33296       , SUBSTR(source_meaning,1,200)
33297       , xla_environment_pkg.g_Usr_Id
33298       , TRUNC(SYSDATE)
33299       , TRUNC(SYSDATE)
33300       , xla_environment_pkg.g_Usr_Id
33301       , xla_environment_pkg.g_Login_Id
33302       , TRUNC(SYSDATE)
33303       , xla_environment_pkg.g_Prog_Appl_Id
33304       , xla_environment_pkg.g_Prog_Id
33305       , xla_environment_pkg.g_Req_Id
33306   FROM (
33307        SELECT xet.event_id                  event_id
33308             , 0                             line_number
33309             , CASE r
33310                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
33311                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
33312                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
33313                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
33314                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
33315                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
33316                 WHEN 7 THEN 'PO_HEADERS_REF_V' 
33317                 WHEN 8 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
33318                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
33319                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
33320                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
33321                 WHEN 12 THEN 'CST_XLA_INV_REF_V' 
33322                 WHEN 13 THEN 'CST_XLA_INV_REF_V' 
33323                 WHEN 14 THEN 'PO_DISTS_REF_V' 
33324                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
33325                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
33326                 WHEN 17 THEN 'PSA_CST_XLA_UPG_V' 
33327                 WHEN 18 THEN 'PO_HEADERS_REF_V' 
33328                 WHEN 19 THEN 'PO_DISTS_REF_V' 
33329                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
33330                 
33331                ELSE null
33332               END                           object_name
33333             , CASE r
33334                 WHEN 1 THEN 'HEADER' 
33335                 WHEN 2 THEN 'HEADER' 
33336                 WHEN 3 THEN 'HEADER' 
33337                 WHEN 4 THEN 'HEADER' 
33338                 WHEN 5 THEN 'HEADER' 
33339                 WHEN 6 THEN 'HEADER' 
33340                 WHEN 7 THEN 'HEADER' 
33341                 WHEN 8 THEN 'HEADER' 
33342                 WHEN 9 THEN 'HEADER' 
33343                 WHEN 10 THEN 'HEADER' 
33344                 WHEN 11 THEN 'HEADER' 
33345                 WHEN 12 THEN 'HEADER' 
33346                 WHEN 13 THEN 'HEADER' 
33347                 WHEN 14 THEN 'HEADER' 
33348                 WHEN 15 THEN 'HEADER' 
33349                 WHEN 16 THEN 'HEADER' 
33350                 WHEN 17 THEN 'HEADER' 
33351                 WHEN 18 THEN 'HEADER' 
33352                 WHEN 19 THEN 'HEADER' 
33353                 WHEN 20 THEN 'HEADER' 
33354                 
33355                 ELSE null
33356               END                           object_type_code
33357             , CASE r
33358                 WHEN 1 THEN '707' 
33359                 WHEN 2 THEN '707' 
33360                 WHEN 3 THEN '707' 
33361                 WHEN 4 THEN '707' 
33362                 WHEN 5 THEN '707' 
33363                 WHEN 6 THEN '707' 
33364                 WHEN 7 THEN '201' 
33365                 WHEN 8 THEN '707' 
33366                 WHEN 9 THEN '707' 
33367                 WHEN 10 THEN '707' 
33368                 WHEN 11 THEN '707' 
33369                 WHEN 12 THEN '707' 
33370                 WHEN 13 THEN '707' 
33371                 WHEN 14 THEN '201' 
33372                 WHEN 15 THEN '707' 
33373                 WHEN 16 THEN '707' 
33374                 WHEN 17 THEN '707' 
33375                 WHEN 18 THEN '201' 
33376                 WHEN 19 THEN '201' 
33377                 WHEN 20 THEN '707' 
33378                 
33379                 ELSE null
33380               END                           source_application_id
33381             , 'S'             source_type_code
33382             , CASE r
33383                 WHEN 1 THEN 'TRANSACTION_ID' 
33384                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
33385                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
33386                 WHEN 4 THEN 'TRANSACTION_UOM' 
33387                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
33388                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
33389                 WHEN 7 THEN 'PURCH_ENCUMBRANCE_FLAG' 
33390                 WHEN 8 THEN 'ENCUMBRANCE_REVERSAL_FLAG' 
33391                 WHEN 9 THEN 'APPLIED_TO_APPL_ID' 
33392                 WHEN 10 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
33393                 WHEN 11 THEN 'APPLIED_TO_ENTITY_CODE' 
33394                 WHEN 12 THEN 'TXN_PO_DISTRIBUTION_ID' 
33395                 WHEN 13 THEN 'APPLIED_TO_PO_DOC_ID' 
33396                 WHEN 14 THEN 'PO_BUDGET_ACCOUNT' 
33397                 WHEN 15 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
33398                 WHEN 16 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
33399                 WHEN 17 THEN 'CST_ENCUM_UPG_OPTION' 
33400                 WHEN 18 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
33401                 WHEN 19 THEN 'RESERVED_FLAG' 
33402                 WHEN 20 THEN 'TRANSFER_TO_GL_INDICATOR' 
33403                 
33404                 ELSE null
33405               END                           source_code
33406             , CASE r
33407                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
33408                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
33409                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
33410                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
33411                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
33412                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
33413                 WHEN 7 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_FLAG)
33414                 WHEN 8 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_FLAG)
33415                 WHEN 9 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
33416                 WHEN 10 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
33417                 WHEN 11 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
33418                 WHEN 12 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
33419                 WHEN 13 THEN TO_CHAR(h4.APPLIED_TO_PO_DOC_ID)
33420                 WHEN 14 THEN TO_CHAR(h7.PO_BUDGET_ACCOUNT)
33421                 WHEN 15 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
33422                 WHEN 16 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
33423                 WHEN 17 THEN TO_CHAR(h9.CST_ENCUM_UPG_OPTION)
33424                 WHEN 18 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_TYPE_ID)
33425                 WHEN 19 THEN TO_CHAR(h7.RESERVED_FLAG)
33426                 WHEN 20 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
33427                 
33428                 ELSE null
33429               END                           source_value
33430             , CASE r
33431                 WHEN 6 THEN fvl9.meaning
33432                 WHEN 20 THEN fvl42.meaning
33433                 
33434                 ELSE null
33435               END               source_meaning
33436         FROM xla_events_gt     xet  
33437       , CST_XLA_INV_HEADERS_V  h1
33438       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
33439       , CST_XLA_INV_REF_V  h4
33440       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
33441       , CST_XLA_INV_TXN_TYPES_REF_V  h6
33442       , PO_DISTS_REF_V  h7
33443       , PO_HEADERS_REF_V  h8
33444       , PSA_CST_XLA_UPG_V  h9
33445   , fnd_lookup_values    fvl9
33446   , fnd_lookup_values    fvl42
33447             ,(select rownum r from all_objects where rownum <= 20 and owner = p_apps_owner)
33448        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
33449          AND xet.event_type_code = C_EVENT_TYPE_CODE
33450             AND h1.event_id = xet.event_id
33451  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id  (+) = h1.inventory_item_id  and h5.organization_id  (+) = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h4.txn_po_header_id = h7.po_header_id  (+)  and h4.txn_po_distribution_id = h7.po_distribution_id (+)  AND h4.txn_po_header_id = h8.po_header_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 
33452 'CST_DISTRIBUTION_TYPE'
33453   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
33454   AND fvl9.view_application_id(+) = 700
33455   AND fvl9.language(+)            = USERENV('LANG')
33456      AND fvl42.lookup_type(+)         = 'YES_NO'
33457   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
33458   AND fvl42.view_application_id(+) = 0
33459   AND fvl42.language(+)            = USERENV('LANG')
33460   
33461 )
33462 ;
33463 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
33464 
33465       trace
33466          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
33467          ,p_level    => C_LEVEL_STATEMENT
33468          ,p_module   => l_log_module);
33469 
33470 END IF;
33471 --
33472 
33473 
33474 
33475 --
33476 INSERT INTO xla_diag_sources --line1
33477 (
33478         event_id
33479       , ledger_id
33480       , sla_ledger_id
33481       , description_language
33482       , object_name
33483       , object_type_code
33484       , line_number
33485       , source_application_id
33486       , source_type_code
33487       , source_code
33488       , source_value
33489       , source_meaning
33490       , created_by
33491       , creation_date
33492       , last_update_date
33493       , last_updated_by
33494       , last_update_login
33495       , program_update_date
33496       , program_application_id
33497       , program_id
33498       , request_id
33499 )
33500 SELECT  event_id
33501       , p_target_ledger_id
33502       , p_sla_ledger_id
33503       , p_language
33504       , object_name
33505       , object_type_code
33506       , line_number
33507       , source_application_id
33508       , source_type_code
33509       , source_code
33510       , SUBSTR(source_value,1,1996)
33511       , SUBSTR(source_meaning,1,200)
33512       , xla_environment_pkg.g_Usr_Id
33513       , TRUNC(SYSDATE)
33514       , TRUNC(SYSDATE)
33515       , xla_environment_pkg.g_Usr_Id
33516       , xla_environment_pkg.g_Login_Id
33517       , TRUNC(SYSDATE)
33518       , xla_environment_pkg.g_Prog_Appl_Id
33519       , xla_environment_pkg.g_Prog_Id
33520       , xla_environment_pkg.g_Req_Id
33521   FROM (
33522        SELECT xet.event_id                  event_id
33523             , l2.line_number                 line_number
33524             , CASE r
33525                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
33526                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
33527                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
33528                 
33529                ELSE null
33530               END                           object_name
33531             , CASE r
33532                 WHEN 1 THEN 'LINE' 
33533                 WHEN 2 THEN 'LINE' 
33534                 WHEN 3 THEN 'LINE' 
33535                 
33536                 ELSE null
33537               END                           object_type_code
33538             , CASE r
33539                 WHEN 1 THEN '707' 
33540                 WHEN 2 THEN '707' 
33541                 WHEN 3 THEN '707' 
33542                 
33543                 ELSE null
33544               END                           source_application_id
33545             , 'S'             source_type_code
33546             , CASE r
33547                 WHEN 1 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
33548                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
33549                 WHEN 3 THEN 'CURRENCY_CODE' 
33550                 
33551                 ELSE null
33552               END                           source_code
33553             , CASE r
33554                 WHEN 1 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
33555                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
33556                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
33557                 
33558                 ELSE null
33559               END                           source_value
33560             , null              source_meaning
33561          FROM  xla_events_gt     xet  
33562         , CST_XLA_INV_LINES_V  l2
33563             ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
33564         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
33565           AND xet.event_type_code = C_EVENT_TYPE_CODE
33566             AND l2.event_id          = xet.event_id
33567 
33568 )
33569 ;
33570 --
33571 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
33572 
33573       trace
33574          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
33575          ,p_level    => C_LEVEL_STATEMENT
33576          ,p_module   => l_log_module);
33577 
33578 END IF;
33579 
33580 
33581 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33582       trace
33583          (p_msg      => 'END of insert_sources_42'
33584          ,p_level    => C_LEVEL_PROCEDURE
33585          ,p_module   => l_log_module);
33586 END IF;
33587 EXCEPTION
33588   WHEN xla_exceptions_pkg.application_exception THEN
33589       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
33590             trace
33591                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
33592                ,p_level    => C_LEVEL_EXCEPTION
33593                ,p_module   => l_log_module);
33594       END IF;
33595       RAISE;
33596   WHEN OTHERS THEN
33597       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
33598             trace
33599                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
33600                ,p_level    => C_LEVEL_EXCEPTION
33601                ,p_module   => l_log_module);
33602        END IF;
33603        xla_exceptions_pkg.raise_message
33604            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_42');
33605 END insert_sources_42;
33606 --
33607 
33608 ---------------------------------------
33609 --
33610 -- PRIVATE FUNCTION
33611 --         EventType_42
33612 --
33613 ----------------------------------------
33614 --
33615 FUNCTION EventType_42
33616        (p_application_id         IN NUMBER
33617        ,p_base_ledger_id         IN NUMBER
33618        ,p_target_ledger_id       IN NUMBER
33619        ,p_language               IN VARCHAR2
33620        ,p_currency_code          IN VARCHAR2
33621        ,p_sla_ledger_id          IN NUMBER
33622        ,p_pad_start_date         IN DATE
33623        ,p_pad_end_date           IN DATE
33624        ,p_primary_ledger_id      IN NUMBER)
33625 RETURN BOOLEAN IS
33626 --
33627 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PO_DEL_INV';
33628 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
33629 
33630 l_calculate_acctd_flag   VARCHAR2(1) :='N';
33631 l_calculate_g_l_flag     VARCHAR2(1) :='N';
33632 --
33633 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
33634 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
33635 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
33636 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
33637 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
33638 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
33639 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
33640 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
33641 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
33642 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
33643 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
33644 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
33645 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
33646 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
33647 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
33648 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
33649 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
33650 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
33651 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
33652 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
33653 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
33654 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
33655 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
33656 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
33657 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
33658 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
33659 
33660 l_event_id                             NUMBER;
33661 l_previous_event_id                    NUMBER;
33662 l_first_event_id                       NUMBER;
33663 l_last_event_id                        NUMBER;
33664 
33665 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
33666 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
33667 --
33668 --
33669 l_result                    BOOLEAN := TRUE;
33670 l_rows                      NUMBER  := 1000;
33671 l_event_type_name           VARCHAR2(80) := 'PO Delivery into Inventory';
33672 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
33673 l_description               VARCHAR2(4000);
33674 l_transaction_reversal      NUMBER;
33675 l_ae_header_id              NUMBER;
33676 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
33677 l_log_module                VARCHAR2(240);
33678 --
33679 l_acct_reversal_source      VARCHAR2(30);
33680 l_trx_reversal_source       VARCHAR2(30);
33681 
33682 l_continue_with_lines       BOOLEAN := TRUE;
33683 --
33684 l_acc_rev_gl_date_source    DATE;                      -- 4262811
33685 --
33686 type t_array_event_id is table of number index by binary_integer;
33687 
33688 l_rec_array_event                    t_rec_array_event;
33689 l_null_rec_array_event               t_rec_array_event;
33690 l_array_ae_header_id                 xla_number_array_type;
33691 l_actual_flag                        VARCHAR2(1) := NULL;
33692 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
33693 l_balance_type_code                  VARCHAR2(1) :=NULL;
33694 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
33695 
33696 --
33697 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
33698 --
33699 
33700 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
33701 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
33702 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
33703 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
33704 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
33705 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
33706 TYPE t_array_source_16 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
33707 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.ENCUMBRANCE_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
33708 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
33709 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
33710 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
33711 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
33712 TYPE t_array_source_23 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
33713 TYPE t_array_source_24 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
33714 TYPE t_array_source_25 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
33715 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
33716 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
33717 TYPE t_array_source_28 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
33718 TYPE t_array_source_31 IS TABLE OF PO_DISTS_REF_V.RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
33719 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
33720 
33721 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
33722 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
33723 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
33724 
33725 l_array_source_1              t_array_source_1;
33726 l_array_source_2              t_array_source_2;
33727 l_array_source_3              t_array_source_3;
33728 l_array_source_4              t_array_source_4;
33729 l_array_source_5              t_array_source_5;
33730 l_array_source_9              t_array_source_9;
33731 l_array_source_9_meaning      t_array_lookup_meaning;
33732 l_array_source_16              t_array_source_16;
33733 l_array_source_17              t_array_source_17;
33734 l_array_source_19              t_array_source_19;
33735 l_array_source_20              t_array_source_20;
33736 l_array_source_21              t_array_source_21;
33737 l_array_source_22              t_array_source_22;
33738 l_array_source_23              t_array_source_23;
33739 l_array_source_24              t_array_source_24;
33740 l_array_source_25              t_array_source_25;
33741 l_array_source_26              t_array_source_26;
33742 l_array_source_27              t_array_source_27;
33743 l_array_source_28              t_array_source_28;
33744 l_array_source_31              t_array_source_31;
33745 l_array_source_42              t_array_source_42;
33746 l_array_source_42_meaning      t_array_lookup_meaning;
33747 
33748 l_array_source_7      t_array_source_7;
33749 l_array_source_8      t_array_source_8;
33750 l_array_source_11      t_array_source_11;
33751 
33752 --
33753 CURSOR header_cur
33754 IS
33755 SELECT /*+ leading(xet) cardinality(xet,1) */
33756 -- Event Type Code: PO_DEL_INV
33757 -- Event Class Code: PURCHASE_ORDER
33758     xet.entity_id
33759   , xet.legal_entity_id
33760   , xet.entity_code
33761   , xet.transaction_number
33762   , xet.event_id
33763   , xet.event_class_code
33764   , xet.event_type_code
33765   , xet.event_number
33766   , xet.event_date
33767   , xet.transaction_date
33768   , xet.reference_num_1
33769   , xet.reference_num_2
33770   , xet.reference_num_3
33771   , xet.reference_num_4
33772   , xet.reference_char_1
33773   , xet.reference_char_2
33774   , xet.reference_char_3
33775   , xet.reference_char_4
33776   , xet.reference_date_1
33777   , xet.reference_date_2
33778   , xet.reference_date_3
33779   , xet.reference_date_4
33780   , xet.event_created_by
33781   , xet.budgetary_control_flag 
33782   , h1.TRANSACTION_ID    source_1
33783   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
33784   , h4.TRANSACTION_QUANTITY    source_3
33785   , h4.TRANSACTION_UOM    source_4
33786   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
33787   , h1.DISTRIBUTION_TYPE    source_9
33788   , fvl9.meaning   source_9_meaning
33789   , h8.PURCH_ENCUMBRANCE_FLAG    source_16
33790   , h3.ENCUMBRANCE_REVERSAL_FLAG    source_17
33791   , h4.APPLIED_TO_APPL_ID    source_19
33792   , h4.APPLIED_TO_DIST_LINK_TYPE    source_20
33793   , h4.APPLIED_TO_ENTITY_CODE    source_21
33794   , h4.TXN_PO_DISTRIBUTION_ID    source_22
33795   , h4.APPLIED_TO_PO_DOC_ID    source_23
33796   , h7.PO_BUDGET_ACCOUNT    source_24
33797   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_25
33798   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_26
33799   , h9.CST_ENCUM_UPG_OPTION    source_27
33800   , h8.PURCH_ENCUMBRANCE_TYPE_ID    source_28
33801   , h7.RESERVED_FLAG    source_31
33802   , h1.TRANSFER_TO_GL_INDICATOR    source_42
33803   , fvl42.meaning   source_42_meaning
33804   FROM xla_events_gt     xet 
33805   , CST_XLA_INV_HEADERS_V  h1
33806   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
33807   , CST_XLA_INV_REF_V  h4
33808   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
33809   , CST_XLA_INV_TXN_TYPES_REF_V  h6
33810   , PO_DISTS_REF_V  h7
33811   , PO_HEADERS_REF_V  h8
33812   , PSA_CST_XLA_UPG_V  h9
33813   , fnd_lookup_values    fvl9
33814   , fnd_lookup_values    fvl42
33815  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
33816    and xet.event_type_code = C_EVENT_TYPE_CODE
33817    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
33818  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h5.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h4.txn_po_header_id = h7.po_header_id  (+)  AND h4.txn_po_distribution_id = h7.po_distribution_id (+)  AND h4.txn_po_header_id = h8.po_header_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 
33819 'CST_DISTRIBUTION_TYPE'
33820   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
33821   AND fvl9.view_application_id(+) = 700
33822   AND fvl9.language(+)            = USERENV('LANG')
33823      AND fvl42.lookup_type(+)         = 'YES_NO'
33824   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
33825   AND fvl42.view_application_id(+) = 0
33826   AND fvl42.language(+)            = USERENV('LANG')
33827   
33828  ORDER BY event_id
33829 ;
33830 
33831 
33832 --
33833 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
33834 IS
33835 SELECT /*+ leading(xet) cardinality(xet,1) */
33836 -- Event Type Code: PO_DEL_INV
33837 -- Event Class Code: PURCHASE_ORDER
33838     xet.entity_id
33839    ,xet.legal_entity_id
33840    ,xet.entity_code
33841    ,xet.transaction_number
33842    ,xet.event_id
33843    ,xet.event_class_code
33844    ,xet.event_type_code
33845    ,xet.event_number
33846    ,xet.event_date
33847    ,xet.transaction_date
33848    ,xet.reference_num_1
33849    ,xet.reference_num_2
33850    ,xet.reference_num_3
33851    ,xet.reference_num_4
33852    ,xet.reference_char_1
33853    ,xet.reference_char_2
33854    ,xet.reference_char_3
33855    ,xet.reference_char_4
33856    ,xet.reference_date_1
33857    ,xet.reference_date_2
33858    ,xet.reference_date_3
33859    ,xet.reference_date_4
33860    ,xet.event_created_by
33861    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
33862   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
33863   , l2.DISTRIBUTION_IDENTIFIER    source_8
33864   , l2.CURRENCY_CODE    source_11
33865   FROM xla_events_gt     xet 
33866   , CST_XLA_INV_LINES_V  l2
33867  WHERE xet.event_id between x_first_event_id and x_last_event_id
33868    and xet.event_date between p_pad_start_date and p_pad_end_date
33869    and xet.event_type_code = C_EVENT_TYPE_CODE
33870    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
33871 ;
33872 
33873 --
33874 BEGIN
33875 IF g_log_enabled THEN
33876    l_log_module := C_DEFAULT_MODULE||'.EventType_42';
33877 END IF;
33878 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33879    trace
33880       (p_msg      => 'BEGIN of EventType_42'
33881       ,p_level    => C_LEVEL_PROCEDURE
33882       ,p_module   => l_log_module);
33883 END IF;
33884 
33885 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
33886    trace
33887       (p_msg      => 'p_application_id = '||p_application_id||
33888                      ' - p_base_ledger_id = '||p_base_ledger_id||
33889                      ' - p_target_ledger_id  = '||p_target_ledger_id||
33890                      ' - p_language = '||p_language||
33891                      ' - p_currency_code = '||p_currency_code||
33892                      ' - p_sla_ledger_id = '||p_sla_ledger_id
33893       ,p_level    => C_LEVEL_STATEMENT
33894       ,p_module   => l_log_module);
33895 END IF;
33896 --
33897 -- initialze arrays
33898 --
33899 g_array_event.DELETE;
33900 l_rec_array_event := l_null_rec_array_event;
33901 --
33902 --------------------------------------
33903 -- 4262811 Initialze MPA Line Number
33904 --------------------------------------
33905 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
33906 
33907 --
33908 
33909 --
33910 OPEN header_cur;
33911 --
33912 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
33913    trace
33914    (p_msg      => 'SQL - FETCH header_cur'
33915    ,p_level    => C_LEVEL_STATEMENT
33916    ,p_module   => l_log_module);
33917 END IF;
33918 --
33919 LOOP
33920 FETCH header_cur BULK COLLECT INTO
33921         l_array_entity_id
33922       , l_array_legal_entity_id
33923       , l_array_entity_code
33924       , l_array_transaction_num
33925       , l_array_event_id
33926       , l_array_class_code
33927       , l_array_event_type
33928       , l_array_event_number
33929       , l_array_event_date
33930       , l_array_transaction_date
33931       , l_array_reference_num_1
33932       , l_array_reference_num_2
33933       , l_array_reference_num_3
33934       , l_array_reference_num_4
33935       , l_array_reference_char_1
33936       , l_array_reference_char_2
33937       , l_array_reference_char_3
33938       , l_array_reference_char_4
33939       , l_array_reference_date_1
33940       , l_array_reference_date_2
33941       , l_array_reference_date_3
33942       , l_array_reference_date_4
33943       , l_array_event_created_by
33944       , l_array_budgetary_control_flag 
33945       , l_array_source_1
33946       , l_array_source_2
33947       , l_array_source_3
33948       , l_array_source_4
33949       , l_array_source_5
33950       , l_array_source_9
33951       , l_array_source_9_meaning
33952       , l_array_source_16
33953       , l_array_source_17
33954       , l_array_source_19
33955       , l_array_source_20
33956       , l_array_source_21
33957       , l_array_source_22
33958       , l_array_source_23
33959       , l_array_source_24
33960       , l_array_source_25
33961       , l_array_source_26
33962       , l_array_source_27
33963       , l_array_source_28
33964       , l_array_source_31
33965       , l_array_source_42
33966       , l_array_source_42_meaning
33967       LIMIT l_rows;
33968 --
33969 IF (C_LEVEL_EVENT >= g_log_level) THEN
33970    trace
33971    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
33972    ,p_level    => C_LEVEL_EVENT
33973    ,p_module   => l_log_module);
33974 END IF;
33975 --
33976 EXIT WHEN l_array_entity_id.COUNT = 0;
33977 
33978 -- initialize arrays
33979 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
33980 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
33981 
33982 --
33983 -- Bug 4458708
33984 --
33985 XLA_AE_LINES_PKG.g_LineNumber := 0;
33986 
33987 
33988 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
33989 g_last_hdr_idx := l_array_event_id.LAST;
33990 --
33991 -- loop for the headers. Each iteration is for each header extract row
33992 -- fetched in header cursor
33993 --
33994 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
33995 
33996 --
33997 -- set event info as cache for other routines to refer event attributes
33998 --
33999 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
34000    (p_application_id           => p_application_id
34001    ,p_primary_ledger_id        => p_primary_ledger_id
34002    ,p_base_ledger_id           => p_base_ledger_id
34003    ,p_target_ledger_id         => p_target_ledger_id
34004    ,p_entity_id                => l_array_entity_id(hdr_idx)
34005    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
34006    ,p_entity_code              => l_array_entity_code(hdr_idx)
34007    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
34008    ,p_event_id                 => l_array_event_id(hdr_idx)
34009    ,p_event_class_code         => l_array_class_code(hdr_idx)
34010    ,p_event_type_code          => l_array_event_type(hdr_idx)
34011    ,p_event_number             => l_array_event_number(hdr_idx)
34012    ,p_event_date               => l_array_event_date(hdr_idx)
34013    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
34014    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
34015    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
34016    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
34017    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
34018    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
34019    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
34020    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
34021    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
34022    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
34023    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
34024    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
34025    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
34026    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
34027    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
34028 
34029 --
34030 -- set the status of entry to C_VALID (0)
34031 --
34032 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
34033 
34034 --
34035 -- initialize a row for ae header
34036 --
34037 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
34038 
34039 l_event_id := l_array_event_id(hdr_idx);
34040 
34041 --
34042 -- storing the hdr_idx for event. May be used by line cursor.
34043 --
34044 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
34045 
34046 --
34047 -- store sources from header extract. This can be improved to
34048 -- store only those sources from header extract that may be used in lines
34049 --
34050 
34051 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
34052 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
34053 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
34054 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
34055 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
34056 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
34057 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
34058 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
34059 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
34060 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
34061 g_array_event(l_event_id).array_value_char('source_20') := l_array_source_20(hdr_idx);
34062 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
34063 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
34064 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
34065 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
34066 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
34067 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
34068 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
34069 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
34070 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
34071 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
34072 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
34073 
34074 --
34075 -- initilaize the status of ae headers for diffrent balance types
34076 -- the status is initialised to C_NOT_CREATED (2)
34077 --
34078 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
34079 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
34080 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
34081 
34082 --
34083 -- call api to validate and store accounting attributes for header
34084 --
34085 
34086 ------------------------------------------------------------
34087 -- Accrual Reversal : to get date for Standard Source (NONE)
34088 ------------------------------------------------------------
34089 l_acc_rev_gl_date_source := NULL;
34090 
34091      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
34092       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_28');
34093      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
34094       l_rec_acct_attrs.array_date_value(2) := 
34095 xla_ae_sources_pkg.GetSystemSourceDate(
34096    p_source_code           => 'XLA_REFERENCE_DATE_1'
34097  , p_source_type_code      => 'Y'
34098  , p_source_application_id =>  602
34099 );
34100      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
34101       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_42');
34102 
34103 
34104 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
34105 
34106 XLA_AE_HEADER_PKG.SetJeCategoryName;
34107 
34108 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
34109 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
34110 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
34111 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
34112 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
34113 
34114 
34115 --
34116 xla_ae_header_pkg.SetHdrDescription(
34117    p_description => Description_1 (
34118    p_application_id => p_application_id 
34119  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
34120  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
34121  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
34122  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
34123  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
34124    )
34125 );
34126 --
34127 
34128 -- No header level analytical criteria
34129 
34130 --
34131 --accounting attribute enhancement, bug 3612931
34132 --
34133 l_trx_reversal_source := SUBSTR(NULL, 1,30);
34134 
34135 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
34136    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
34137 
34138    xla_accounting_err_pkg.build_message
34139       (p_appli_s_name            => 'XLA'
34140       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
34141       ,p_token_1                 => 'ACCT_ATTR_NAME'
34142       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
34143       ,p_token_2                 => 'PRODUCT_NAME'
34144       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
34145       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
34146       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
34147       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
34148 
34149 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
34150    --
34151    -- following sets the accounting attributes needed to reverse
34152    -- accounting for a distributeion
34153    --
34154    xla_ae_lines_pkg.SetTrxReversalAttrs
34155       (p_event_id              => l_event_id
34156       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
34157       ,p_trx_reversal_source   => l_trx_reversal_source);
34158 
34159 END IF;
34160 
34161 
34162 ----------------------------------------------------------------
34163 -- 4262811 -  update the header statuses to invalid in need be
34164 ----------------------------------------------------------------
34165 --
34166 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
34167 
34168 
34169   -----------------------------------------------
34170   -- No accrual reversal for the event class/type
34171   -----------------------------------------------
34172 ----------------------------------------------------------------
34173 
34174 --
34175 -- this ends the header loop iteration for one bulk fetch
34176 --
34177 END LOOP;
34178 
34179 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
34180 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
34181 
34182 --
34183 -- insert dummy rows into lines gt table that were created due to
34184 -- transaction reversals
34185 --
34186 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
34187    l_result := XLA_AE_LINES_PKG.InsertLines;
34188 END IF;
34189 
34190 --
34191 -- reset the temp_line_num for each set of events fetched from header
34192 -- cursor rather than doing it for each new event in line cursor
34193 -- Bug 3939231
34194 --
34195 xla_ae_lines_pkg.g_temp_line_num := 0;
34196 
34197 
34198 
34199 --
34200 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
34201 --
34202 --
34203 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
34204 
34205       trace
34206          (p_msg      => 'SQL - FETCH line_cur'
34207          ,p_level    => C_LEVEL_STATEMENT
34208          ,p_module   => l_log_module);
34209 
34210 END IF;
34211 --
34212 --
34213 LOOP
34214   --
34215   FETCH line_cur BULK COLLECT INTO
34216         l_array_entity_id
34217       , l_array_legal_entity_id
34218       , l_array_entity_code
34219       , l_array_transaction_num
34220       , l_array_event_id
34221       , l_array_class_code
34222       , l_array_event_type
34223       , l_array_event_number
34224       , l_array_event_date
34225       , l_array_transaction_date
34226       , l_array_reference_num_1
34227       , l_array_reference_num_2
34228       , l_array_reference_num_3
34229       , l_array_reference_num_4
34230       , l_array_reference_char_1
34231       , l_array_reference_char_2
34232       , l_array_reference_char_3
34233       , l_array_reference_char_4
34234       , l_array_reference_date_1
34235       , l_array_reference_date_2
34236       , l_array_reference_date_3
34237       , l_array_reference_date_4
34238       , l_array_event_created_by
34239       , l_array_budgetary_control_flag
34240       , l_array_extract_line_num 
34241       , l_array_source_7
34242       , l_array_source_8
34243       , l_array_source_11
34244       LIMIT l_rows;
34245 
34246   --
34247   IF (C_LEVEL_EVENT >= g_log_level) THEN
34248             trace
34249                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
34250                ,p_level    => C_LEVEL_EVENT
34251                ,p_module   => l_log_module);
34252   END IF;
34253   --
34254   EXIT WHEN l_array_entity_id.count = 0;
34255 
34256   XLA_AE_LINES_PKG.g_rec_lines := null;
34257 
34258 --
34259 -- Bug 4458708
34260 --
34261 XLA_AE_LINES_PKG.g_LineNumber := 0;
34262 --
34263 --
34264 
34265 FOR Idx IN 1..l_array_event_id.count LOOP
34266    --
34267    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
34268    --
34269    l_event_id := l_array_event_id(idx);  -- 5648433
34270 
34271    --
34272    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
34273    --
34274 
34275    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
34276              (g_array_event(l_event_id).array_value_num('header_index'))
34277          ,'N'
34278          ) <> 'Y'
34279    THEN
34280       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
34281          trace
34282             (p_msg      => 'Trancaction revesal option is not Y '
34283             ,p_level    => C_LEVEL_STATEMENT
34284             ,p_module   => l_log_module);
34285       END IF;
34286 
34287 --
34288 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
34289 --
34290 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
34291 --
34292 -- set event info as cache for other routines to refer event attributes
34293 --
34294 
34295 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
34296    l_previous_event_id := l_event_id;
34297 
34298    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
34299       (p_application_id           => p_application_id
34300       ,p_primary_ledger_id        => p_primary_ledger_id
34301       ,p_base_ledger_id           => p_base_ledger_id
34302       ,p_target_ledger_id         => p_target_ledger_id
34303       ,p_entity_id                => l_array_entity_id(Idx)
34304       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
34305       ,p_entity_code              => l_array_entity_code(Idx)
34306       ,p_transaction_num          => l_array_transaction_num(Idx)
34307       ,p_event_id                 => l_array_event_id(Idx)
34308       ,p_event_class_code         => l_array_class_code(Idx)
34309       ,p_event_type_code          => l_array_event_type(Idx)
34310       ,p_event_number             => l_array_event_number(Idx)
34311       ,p_event_date               => l_array_event_date(Idx)
34312       ,p_transaction_date         => l_array_transaction_date(Idx)
34313       ,p_reference_num_1          => l_array_reference_num_1(Idx)
34314       ,p_reference_num_2          => l_array_reference_num_2(Idx)
34315       ,p_reference_num_3          => l_array_reference_num_3(Idx)
34316       ,p_reference_num_4          => l_array_reference_num_4(Idx)
34317       ,p_reference_char_1         => l_array_reference_char_1(Idx)
34318       ,p_reference_char_2         => l_array_reference_char_2(Idx)
34319       ,p_reference_char_3         => l_array_reference_char_3(Idx)
34320       ,p_reference_char_4         => l_array_reference_char_4(Idx)
34321       ,p_reference_date_1         => l_array_reference_date_1(Idx)
34322       ,p_reference_date_2         => l_array_reference_date_2(Idx)
34323       ,p_reference_date_3         => l_array_reference_date_3(Idx)
34324       ,p_reference_date_4         => l_array_reference_date_4(Idx)
34325       ,p_event_created_by         => l_array_event_created_by(Idx)
34326       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
34327        --
34328 END IF;
34329 
34330 
34331 
34332 --
34333 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
34334 
34335 l_acct_reversal_source := SUBSTR(NULL, 1,30);
34336 
34337 IF l_continue_with_lines THEN
34338    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
34339       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
34340 
34341       xla_accounting_err_pkg.build_message
34342          (p_appli_s_name            => 'XLA'
34343          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
34344          ,p_token_1                 => 'LINE_NUMBER'
34345          ,p_value_1                 => l_array_extract_line_num(Idx)
34346          ,p_token_2                 => 'PRODUCT_NAME'
34347          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
34348          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
34349          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
34350          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
34351 
34352    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
34353       --
34354       -- following sets the accounting attributes needed to reverse
34355       -- accounting for a distributeion
34356       --
34357 
34358       --
34359       -- 5217187
34360       --
34361       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
34362       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
34363                                        g_array_event(l_event_id).array_value_num('header_index'));
34364       --
34365       --
34366 
34367       -- No reversal code generated
34368 
34369       xla_ae_lines_pkg.SetAcctReversalAttrs
34370          (p_event_id             => l_event_id
34371          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
34372          ,p_calculate_acctd_flag => l_calculate_acctd_flag
34373          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
34374    END IF;
34375 
34376    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
34377        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
34378 
34379 --
34380 AcctLineType_12 (
34381  p_application_id  => p_application_id
34382  ,p_event_id     => l_event_id
34383  ,p_calculate_acctd_flag => l_calculate_acctd_flag
34384  ,p_calculate_g_l_flag => l_calculate_g_l_flag
34385  ,p_actual_flag => l_actual_flag
34386  ,p_balance_type_code => l_balance_type_code
34387  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
34388  
34389  , p_source_8 => l_array_source_8(Idx)
34390  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
34391  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
34392  , p_source_11 => l_array_source_11(Idx)
34393  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
34394  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
34395  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
34396  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
34397  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
34398  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
34399  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
34400  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
34401  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
34402  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
34403  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
34404  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
34405  );
34406 If(l_balance_type_code = 'A') THEN
34407   l_actual_gain_loss_ref := l_gain_or_loss_ref;
34408 END IF;
34409 
34410 --
34411 
34412 
34413 --
34414 AcctLineType_19 (
34415  p_application_id  => p_application_id
34416  ,p_event_id     => l_event_id
34417  ,p_calculate_acctd_flag => l_calculate_acctd_flag
34418  ,p_calculate_g_l_flag => l_calculate_g_l_flag
34419  ,p_actual_flag => l_actual_flag
34420  ,p_balance_type_code => l_balance_type_code
34421  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
34422  
34423  , p_source_7 => l_array_source_7(Idx)
34424  , p_source_8 => l_array_source_8(Idx)
34425  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
34426  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
34427  , p_source_11 => l_array_source_11(Idx)
34428  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
34429  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
34430  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
34431  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
34432  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
34433  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
34434  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
34435  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
34436  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
34437  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
34438  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
34439  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
34440  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
34441  );
34442 If(l_balance_type_code = 'A') THEN
34443   l_actual_gain_loss_ref := l_gain_or_loss_ref;
34444 END IF;
34445 
34446 --
34447 
34448       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
34449       -- or secondary ledger that has different currency with primary
34450       -- or alc that is calculated by sla
34451       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
34452             (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'))
34453 
34454 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
34455 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
34456           AND (l_actual_flag = 'A')) THEN
34457         XLA_AE_LINES_PKG.CreateGainOrLossLines(
34458           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
34459          ,p_application_id   => p_application_id
34460          ,p_amb_context_code => 'DEFAULT'
34461          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
34462          ,p_event_class_code => C_EVENT_CLASS_CODE
34463          ,p_event_type_code  => C_EVENT_TYPE_CODE
34464          
34465          ,p_gain_ccid        => -1
34466          ,p_loss_ccid        => -1
34467 
34468          ,p_actual_flag      => l_actual_flag
34469          ,p_enc_flag         => null
34470          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
34471          ,p_enc_g_l_ref      => null
34472          );
34473       END IF;
34474    END IF;
34475 END IF;
34476 
34477    ELSE
34478       --
34479       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
34480       --
34481       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
34482          trace
34483             (p_msg      => 'Trancaction revesal option is Y'
34484             ,p_level    => C_LEVEL_STATEMENT
34485             ,p_module   => l_log_module);
34486       END IF;
34487    END IF;
34488 
34489 END LOOP;
34490 l_result := XLA_AE_LINES_PKG.InsertLines ;
34491 end loop;
34492 close line_cur;
34493 
34494 
34495 --
34496 -- insert headers into xla_ae_headers_gt table
34497 --
34498 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
34499 
34500 -- insert into errors table here.
34501 
34502 END LOOP;
34503 
34504 --
34505 -- 4865292
34506 --
34507 -- Compare g_hdr_extract_count with event count in
34508 -- CreateHeadersAndLines.
34509 --
34510 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
34511 
34512 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
34513    trace (p_msg     => '# rows extracted from header extract objects '
34514                     || ' (running total): '
34515                     || g_hdr_extract_count
34516          ,p_level   => C_LEVEL_STATEMENT
34517          ,p_module  => l_log_module);
34518 END IF;
34519 
34520 CLOSE header_cur;
34521 --
34522 
34523 --
34524 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34525    trace
34526       (p_msg      => 'END of EventType_42'
34527       ,p_level    => C_LEVEL_PROCEDURE
34528       ,p_module   => l_log_module);
34529 END IF;
34530 --
34531 RETURN l_result;
34532 EXCEPTION
34533 WHEN xla_exceptions_pkg.application_exception THEN
34534    
34535 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
34536 
34537    
34538 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
34539 
34540    RAISE;
34541 
34542 WHEN NO_DATA_FOUND THEN
34543 
34544 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
34545 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
34546 
34547 FOR header_record IN header_cur
34548 LOOP
34549     l_array_header_events(header_record.event_id) := header_record.event_id;
34550 END LOOP;
34551 
34552 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
34553 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
34554 
34555 fnd_file.put_line(fnd_file.LOG, '                    ');
34556 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
34557 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
34558 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
34559 
34560 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
34561 LOOP
34562 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
34563 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
34564         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
34565 	END IF;
34566 END LOOP;
34567 
34568 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
34569 fnd_file.put_line(fnd_file.LOG, '                    ');
34570 
34571 
34572 xla_exceptions_pkg.raise_message
34573       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_42');
34574 
34575 
34576 WHEN OTHERS THEN
34577    xla_exceptions_pkg.raise_message
34578       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_42');
34579 END EventType_42;
34580 --
34581 
34582 ---------------------------------------
34583 --
34584 -- PRIVATE PROCEDURE
34585 --         insert_sources_43
34586 --
34587 ----------------------------------------
34588 --
34589 PROCEDURE insert_sources_43(
34590                                 p_target_ledger_id       IN NUMBER
34591                               , p_language               IN VARCHAR2
34592                               , p_sla_ledger_id          IN NUMBER
34593                               , p_pad_start_date         IN DATE
34594                               , p_pad_end_date           IN DATE
34595                          )
34596 IS
34597 
34598 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RET_RI_INV';
34599 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
34600 p_apps_owner                   VARCHAR2(30);
34601 l_log_module                   VARCHAR2(240);
34602 BEGIN
34603 IF g_log_enabled THEN
34604       l_log_module := C_DEFAULT_MODULE||'.insert_sources_43';
34605 END IF;
34606 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34607 
34608       trace
34609          (p_msg      => 'BEGIN of insert_sources_43'
34610          ,p_level    => C_LEVEL_PROCEDURE
34611          ,p_module   => l_log_module);
34612 
34613 END IF;
34614 
34615 -- select APPS owner
34616 SELECT oracle_username
34617   INTO p_apps_owner
34618   FROM fnd_oracle_userid
34619  WHERE read_only_flag = 'U'
34620 ;
34621 
34622 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
34623       trace
34624          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
34625                         ' - p_language = '||p_language||
34626                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
34627                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
34628                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
34629                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
34630          ,p_level    => C_LEVEL_STATEMENT
34631          ,p_module   => l_log_module);
34632 END IF;
34633 
34634 
34635 --
34636 INSERT INTO xla_diag_sources --hdr1
34637 (
34638         event_id
34639       , ledger_id
34640       , sla_ledger_id
34641       , description_language
34642       , object_name
34643       , object_type_code
34644       , line_number
34645       , source_application_id
34646       , source_type_code
34647       , source_code
34648       , source_value
34649       , source_meaning
34650       , created_by
34651       , creation_date
34652       , last_update_date
34653       , last_updated_by
34654       , last_update_login
34655       , program_update_date
34656       , program_application_id
34657       , program_id
34658       , request_id
34659 )
34660 SELECT
34661         event_id
34662       , p_target_ledger_id
34663       , p_sla_ledger_id
34664       , p_language
34665       , object_name
34666       , object_type_code
34667       , line_number
34668       , source_application_id
34669       , source_type_code
34670       , source_code
34671       , SUBSTR(source_value ,1,1996)
34672       , SUBSTR(source_meaning,1,200)
34673       , xla_environment_pkg.g_Usr_Id
34674       , TRUNC(SYSDATE)
34675       , TRUNC(SYSDATE)
34676       , xla_environment_pkg.g_Usr_Id
34677       , xla_environment_pkg.g_Login_Id
34678       , TRUNC(SYSDATE)
34679       , xla_environment_pkg.g_Prog_Appl_Id
34680       , xla_environment_pkg.g_Prog_Id
34681       , xla_environment_pkg.g_Req_Id
34682   FROM (
34683        SELECT xet.event_id                  event_id
34684             , 0                             line_number
34685             , CASE r
34686                WHEN 1 THEN 'CST_XLA_INV_HEADERS_V' 
34687                 WHEN 2 THEN 'CST_XLA_INV_SYSTEM_ITEMS_REF_V' 
34688                 WHEN 3 THEN 'CST_XLA_INV_REF_V' 
34689                 WHEN 4 THEN 'CST_XLA_INV_REF_V' 
34690                 WHEN 5 THEN 'CST_XLA_INV_TXN_TYPES_REF_V' 
34691                 WHEN 6 THEN 'CST_XLA_INV_HEADERS_V' 
34692                 WHEN 7 THEN 'PO_HEADERS_REF_V' 
34693                 WHEN 8 THEN 'CST_XLA_INV_ORG_PARAMS_REF_V' 
34694                 WHEN 9 THEN 'CST_XLA_INV_REF_V' 
34695                 WHEN 10 THEN 'CST_XLA_INV_REF_V' 
34696                 WHEN 11 THEN 'CST_XLA_INV_REF_V' 
34697                 WHEN 12 THEN 'CST_XLA_INV_REF_V' 
34698                 WHEN 13 THEN 'CST_XLA_INV_REF_V' 
34699                 WHEN 14 THEN 'PO_DISTS_REF_V' 
34700                 WHEN 15 THEN 'CST_XLA_INV_REF_V' 
34701                 WHEN 16 THEN 'CST_XLA_INV_REF_V' 
34702                 WHEN 17 THEN 'PSA_CST_XLA_UPG_V' 
34703                 WHEN 18 THEN 'PO_HEADERS_REF_V' 
34704                 WHEN 19 THEN 'PO_DISTS_REF_V' 
34705                 WHEN 20 THEN 'CST_XLA_INV_HEADERS_V' 
34706                 
34707                ELSE null
34708               END                           object_name
34709             , CASE r
34710                 WHEN 1 THEN 'HEADER' 
34711                 WHEN 2 THEN 'HEADER' 
34712                 WHEN 3 THEN 'HEADER' 
34713                 WHEN 4 THEN 'HEADER' 
34714                 WHEN 5 THEN 'HEADER' 
34715                 WHEN 6 THEN 'HEADER' 
34716                 WHEN 7 THEN 'HEADER' 
34717                 WHEN 8 THEN 'HEADER' 
34718                 WHEN 9 THEN 'HEADER' 
34719                 WHEN 10 THEN 'HEADER' 
34720                 WHEN 11 THEN 'HEADER' 
34721                 WHEN 12 THEN 'HEADER' 
34722                 WHEN 13 THEN 'HEADER' 
34723                 WHEN 14 THEN 'HEADER' 
34724                 WHEN 15 THEN 'HEADER' 
34725                 WHEN 16 THEN 'HEADER' 
34726                 WHEN 17 THEN 'HEADER' 
34727                 WHEN 18 THEN 'HEADER' 
34728                 WHEN 19 THEN 'HEADER' 
34729                 WHEN 20 THEN 'HEADER' 
34730                 
34731                 ELSE null
34732               END                           object_type_code
34733             , CASE r
34734                 WHEN 1 THEN '707' 
34735                 WHEN 2 THEN '707' 
34736                 WHEN 3 THEN '707' 
34737                 WHEN 4 THEN '707' 
34738                 WHEN 5 THEN '707' 
34739                 WHEN 6 THEN '707' 
34740                 WHEN 7 THEN '201' 
34741                 WHEN 8 THEN '707' 
34742                 WHEN 9 THEN '707' 
34743                 WHEN 10 THEN '707' 
34744                 WHEN 11 THEN '707' 
34745                 WHEN 12 THEN '707' 
34746                 WHEN 13 THEN '707' 
34747                 WHEN 14 THEN '201' 
34748                 WHEN 15 THEN '707' 
34749                 WHEN 16 THEN '707' 
34750                 WHEN 17 THEN '707' 
34751                 WHEN 18 THEN '201' 
34752                 WHEN 19 THEN '201' 
34753                 WHEN 20 THEN '707' 
34754                 
34755                 ELSE null
34756               END                           source_application_id
34757             , 'S'             source_type_code
34758             , CASE r
34759                 WHEN 1 THEN 'TRANSACTION_ID' 
34760                 WHEN 2 THEN 'ITEM_CONCATENATED_SEGMENTS' 
34761                 WHEN 3 THEN 'TRANSACTION_QUANTITY' 
34762                 WHEN 4 THEN 'TRANSACTION_UOM' 
34763                 WHEN 5 THEN 'INV_TXN_TYPE_DESCRIPTION' 
34764                 WHEN 6 THEN 'DISTRIBUTION_TYPE' 
34765                 WHEN 7 THEN 'PURCH_ENCUMBRANCE_FLAG' 
34766                 WHEN 8 THEN 'ENCUMBRANCE_REVERSAL_FLAG' 
34767                 WHEN 9 THEN 'APPLIED_TO_APPL_ID' 
34768                 WHEN 10 THEN 'APPLIED_TO_DIST_LINK_TYPE' 
34769                 WHEN 11 THEN 'APPLIED_TO_ENTITY_CODE' 
34770                 WHEN 12 THEN 'TXN_PO_DISTRIBUTION_ID' 
34771                 WHEN 13 THEN 'APPLIED_TO_PO_DOC_ID' 
34772                 WHEN 14 THEN 'PO_BUDGET_ACCOUNT' 
34773                 WHEN 15 THEN 'ENCUM_REVERSAL_AMOUNT_ENTERED' 
34774                 WHEN 16 THEN 'ENCUMBRANCE_REVERSAL_AMOUNT' 
34775                 WHEN 17 THEN 'CST_ENCUM_UPG_OPTION' 
34776                 WHEN 18 THEN 'PURCH_ENCUMBRANCE_TYPE_ID' 
34777                 WHEN 19 THEN 'RESERVED_FLAG' 
34778                 WHEN 20 THEN 'TRANSFER_TO_GL_INDICATOR' 
34779                 
34780                 ELSE null
34781               END                           source_code
34782             , CASE r
34783                 WHEN 1 THEN TO_CHAR(h1.TRANSACTION_ID)
34784                 WHEN 2 THEN TO_CHAR(h5.ITEM_CONCATENATED_SEGMENTS)
34785                 WHEN 3 THEN TO_CHAR(h4.TRANSACTION_QUANTITY)
34786                 WHEN 4 THEN TO_CHAR(h4.TRANSACTION_UOM)
34787                 WHEN 5 THEN TO_CHAR(h6.INV_TXN_TYPE_DESCRIPTION)
34788                 WHEN 6 THEN TO_CHAR(h1.DISTRIBUTION_TYPE)
34789                 WHEN 7 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_FLAG)
34790                 WHEN 8 THEN TO_CHAR(h3.ENCUMBRANCE_REVERSAL_FLAG)
34791                 WHEN 9 THEN TO_CHAR(h4.APPLIED_TO_APPL_ID)
34792                 WHEN 10 THEN TO_CHAR(h4.APPLIED_TO_DIST_LINK_TYPE)
34793                 WHEN 11 THEN TO_CHAR(h4.APPLIED_TO_ENTITY_CODE)
34794                 WHEN 12 THEN TO_CHAR(h4.TXN_PO_DISTRIBUTION_ID)
34795                 WHEN 13 THEN TO_CHAR(h4.APPLIED_TO_PO_DOC_ID)
34796                 WHEN 14 THEN TO_CHAR(h7.PO_BUDGET_ACCOUNT)
34797                 WHEN 15 THEN TO_CHAR(h4.ENCUM_REVERSAL_AMOUNT_ENTERED)
34798                 WHEN 16 THEN TO_CHAR(h4.ENCUMBRANCE_REVERSAL_AMOUNT)
34799                 WHEN 17 THEN TO_CHAR(h9.CST_ENCUM_UPG_OPTION)
34800                 WHEN 18 THEN TO_CHAR(h8.PURCH_ENCUMBRANCE_TYPE_ID)
34801                 WHEN 19 THEN TO_CHAR(h7.RESERVED_FLAG)
34802                 WHEN 20 THEN TO_CHAR(h1.TRANSFER_TO_GL_INDICATOR)
34803                 
34804                 ELSE null
34805               END                           source_value
34806             , CASE r
34807                 WHEN 6 THEN fvl9.meaning
34808                 WHEN 20 THEN fvl42.meaning
34809                 
34810                 ELSE null
34811               END               source_meaning
34812         FROM xla_events_gt     xet  
34813       , CST_XLA_INV_HEADERS_V  h1
34814       , CST_XLA_INV_ORG_PARAMS_REF_V  h3
34815       , CST_XLA_INV_REF_V  h4
34816       , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
34817       , CST_XLA_INV_TXN_TYPES_REF_V  h6
34818       , PO_DISTS_REF_V  h7
34819       , PO_HEADERS_REF_V  h8
34820       , PSA_CST_XLA_UPG_V  h9
34821   , fnd_lookup_values    fvl9
34822   , fnd_lookup_values    fvl42
34823             ,(select rownum r from all_objects where rownum <= 20 and owner = p_apps_owner)
34824        WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
34825          AND xet.event_type_code = C_EVENT_TYPE_CODE
34826             AND h1.event_id = xet.event_id
34827  AND h3.inv_organization_id  (+) = h1.organization_id AND h4.ref_transaction_id = h1.transaction_id AND h5.inventory_item_id  (+) = h1.inventory_item_id  and h5.organization_id  (+) = h1.organization_id AND h6.inv_transaction_type_id = h1.transaction_type_id AND h4.txn_po_header_id = h7.po_header_id  (+)  and h4.txn_po_distribution_id = h7.po_distribution_id (+)  AND h4.txn_po_header_id = h8.po_header_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 
34828 'CST_DISTRIBUTION_TYPE'
34829   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
34830   AND fvl9.view_application_id(+) = 700
34831   AND fvl9.language(+)            = USERENV('LANG')
34832      AND fvl42.lookup_type(+)         = 'YES_NO'
34833   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
34834   AND fvl42.view_application_id(+) = 0
34835   AND fvl42.language(+)            = USERENV('LANG')
34836   
34837 )
34838 ;
34839 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
34840 
34841       trace
34842          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
34843          ,p_level    => C_LEVEL_STATEMENT
34844          ,p_module   => l_log_module);
34845 
34846 END IF;
34847 --
34848 
34849 
34850 
34851 --
34852 INSERT INTO xla_diag_sources --line1
34853 (
34854         event_id
34855       , ledger_id
34856       , sla_ledger_id
34857       , description_language
34858       , object_name
34859       , object_type_code
34860       , line_number
34861       , source_application_id
34862       , source_type_code
34863       , source_code
34864       , source_value
34865       , source_meaning
34866       , created_by
34867       , creation_date
34868       , last_update_date
34869       , last_updated_by
34870       , last_update_login
34871       , program_update_date
34872       , program_application_id
34873       , program_id
34874       , request_id
34875 )
34876 SELECT  event_id
34877       , p_target_ledger_id
34878       , p_sla_ledger_id
34879       , p_language
34880       , object_name
34881       , object_type_code
34882       , line_number
34883       , source_application_id
34884       , source_type_code
34885       , source_code
34886       , SUBSTR(source_value,1,1996)
34887       , SUBSTR(source_meaning,1,200)
34888       , xla_environment_pkg.g_Usr_Id
34889       , TRUNC(SYSDATE)
34890       , TRUNC(SYSDATE)
34891       , xla_environment_pkg.g_Usr_Id
34892       , xla_environment_pkg.g_Login_Id
34893       , TRUNC(SYSDATE)
34894       , xla_environment_pkg.g_Prog_Appl_Id
34895       , xla_environment_pkg.g_Prog_Id
34896       , xla_environment_pkg.g_Req_Id
34897   FROM (
34898        SELECT xet.event_id                  event_id
34899             , l2.line_number                 line_number
34900             , CASE r
34901                WHEN 1 THEN 'CST_XLA_INV_LINES_V' 
34902                 WHEN 2 THEN 'CST_XLA_INV_LINES_V' 
34903                 WHEN 3 THEN 'CST_XLA_INV_LINES_V' 
34904                 
34905                ELSE null
34906               END                           object_name
34907             , CASE r
34908                 WHEN 1 THEN 'LINE' 
34909                 WHEN 2 THEN 'LINE' 
34910                 WHEN 3 THEN 'LINE' 
34911                 
34912                 ELSE null
34913               END                           object_type_code
34914             , CASE r
34915                 WHEN 1 THEN '707' 
34916                 WHEN 2 THEN '707' 
34917                 WHEN 3 THEN '707' 
34918                 
34919                 ELSE null
34920               END                           source_application_id
34921             , 'S'             source_type_code
34922             , CASE r
34923                 WHEN 1 THEN 'ACCOUNTING_LINE_TYPE_CODE' 
34924                 WHEN 2 THEN 'DISTRIBUTION_IDENTIFIER' 
34925                 WHEN 3 THEN 'CURRENCY_CODE' 
34926                 
34927                 ELSE null
34928               END                           source_code
34929             , CASE r
34930                 WHEN 1 THEN TO_CHAR(l2.ACCOUNTING_LINE_TYPE_CODE)
34931                 WHEN 2 THEN TO_CHAR(l2.DISTRIBUTION_IDENTIFIER)
34932                 WHEN 3 THEN TO_CHAR(l2.CURRENCY_CODE)
34933                 
34934                 ELSE null
34935               END                           source_value
34936             , null              source_meaning
34937          FROM  xla_events_gt     xet  
34938         , CST_XLA_INV_LINES_V  l2
34939             ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
34940         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
34941           AND xet.event_type_code = C_EVENT_TYPE_CODE
34942             AND l2.event_id          = xet.event_id
34943 
34944 )
34945 ;
34946 --
34947 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
34948 
34949       trace
34950          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
34951          ,p_level    => C_LEVEL_STATEMENT
34952          ,p_module   => l_log_module);
34953 
34954 END IF;
34955 
34956 
34957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34958       trace
34959          (p_msg      => 'END of insert_sources_43'
34960          ,p_level    => C_LEVEL_PROCEDURE
34961          ,p_module   => l_log_module);
34962 END IF;
34963 EXCEPTION
34964   WHEN xla_exceptions_pkg.application_exception THEN
34965       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
34966             trace
34967                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
34968                ,p_level    => C_LEVEL_EXCEPTION
34969                ,p_module   => l_log_module);
34970       END IF;
34971       RAISE;
34972   WHEN OTHERS THEN
34973       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
34974             trace
34975                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
34976                ,p_level    => C_LEVEL_EXCEPTION
34977                ,p_module   => l_log_module);
34978        END IF;
34979        xla_exceptions_pkg.raise_message
34980            (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.insert_sources_43');
34981 END insert_sources_43;
34982 --
34983 
34984 ---------------------------------------
34985 --
34986 -- PRIVATE FUNCTION
34987 --         EventType_43
34988 --
34989 ----------------------------------------
34990 --
34991 FUNCTION EventType_43
34992        (p_application_id         IN NUMBER
34993        ,p_base_ledger_id         IN NUMBER
34994        ,p_target_ledger_id       IN NUMBER
34995        ,p_language               IN VARCHAR2
34996        ,p_currency_code          IN VARCHAR2
34997        ,p_sla_ledger_id          IN NUMBER
34998        ,p_pad_start_date         IN DATE
34999        ,p_pad_end_date           IN DATE
35000        ,p_primary_ledger_id      IN NUMBER)
35001 RETURN BOOLEAN IS
35002 --
35003 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RET_RI_INV';
35004 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PURCHASE_ORDER';
35005 
35006 l_calculate_acctd_flag   VARCHAR2(1) :='N';
35007 l_calculate_g_l_flag     VARCHAR2(1) :='N';
35008 --
35009 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
35010 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
35011 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
35012 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
35013 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
35014 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
35015 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
35016 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
35017 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
35018 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
35019 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
35020 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
35021 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
35022 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
35023 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
35024 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
35025 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
35026 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
35027 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
35028 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
35029 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
35030 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
35031 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
35032 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
35033 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
35034 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
35035 
35036 l_event_id                             NUMBER;
35037 l_previous_event_id                    NUMBER;
35038 l_first_event_id                       NUMBER;
35039 l_last_event_id                        NUMBER;
35040 
35041 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
35042 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
35043 --
35044 --
35045 l_result                    BOOLEAN := TRUE;
35046 l_rows                      NUMBER  := 1000;
35047 l_event_type_name           VARCHAR2(80) := 'Return to Receiving Inspection from Inventory';
35048 l_event_class_name          VARCHAR2(80) := 'PO Delivery into Inventory';
35049 l_description               VARCHAR2(4000);
35050 l_transaction_reversal      NUMBER;
35051 l_ae_header_id              NUMBER;
35052 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
35053 l_log_module                VARCHAR2(240);
35054 --
35055 l_acct_reversal_source      VARCHAR2(30);
35056 l_trx_reversal_source       VARCHAR2(30);
35057 
35058 l_continue_with_lines       BOOLEAN := TRUE;
35059 --
35060 l_acc_rev_gl_date_source    DATE;                      -- 4262811
35061 --
35062 type t_array_event_id is table of number index by binary_integer;
35063 
35064 l_rec_array_event                    t_rec_array_event;
35065 l_null_rec_array_event               t_rec_array_event;
35066 l_array_ae_header_id                 xla_number_array_type;
35067 l_actual_flag                        VARCHAR2(1) := NULL;
35068 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
35069 l_balance_type_code                  VARCHAR2(1) :=NULL;
35070 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
35071 
35072 --
35073 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
35074 --
35075 
35076 TYPE t_array_source_1 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSACTION_ID%TYPE INDEX BY BINARY_INTEGER;
35077 TYPE t_array_source_2 IS TABLE OF CST_XLA_INV_SYSTEM_ITEMS_REF_V.ITEM_CONCATENATED_SEGMENTS%TYPE INDEX BY BINARY_INTEGER;
35078 TYPE t_array_source_3 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_QUANTITY%TYPE INDEX BY BINARY_INTEGER;
35079 TYPE t_array_source_4 IS TABLE OF CST_XLA_INV_REF_V.TRANSACTION_UOM%TYPE INDEX BY BINARY_INTEGER;
35080 TYPE t_array_source_5 IS TABLE OF CST_XLA_INV_TXN_TYPES_REF_V.INV_TXN_TYPE_DESCRIPTION%TYPE INDEX BY BINARY_INTEGER;
35081 TYPE t_array_source_9 IS TABLE OF CST_XLA_INV_HEADERS_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
35082 TYPE t_array_source_16 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
35083 TYPE t_array_source_17 IS TABLE OF CST_XLA_INV_ORG_PARAMS_REF_V.ENCUMBRANCE_REVERSAL_FLAG%TYPE INDEX BY BINARY_INTEGER;
35084 TYPE t_array_source_19 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_APPL_ID%TYPE INDEX BY BINARY_INTEGER;
35085 TYPE t_array_source_20 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
35086 TYPE t_array_source_21 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
35087 TYPE t_array_source_22 IS TABLE OF CST_XLA_INV_REF_V.TXN_PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
35088 TYPE t_array_source_23 IS TABLE OF CST_XLA_INV_REF_V.APPLIED_TO_PO_DOC_ID%TYPE INDEX BY BINARY_INTEGER;
35089 TYPE t_array_source_24 IS TABLE OF PO_DISTS_REF_V.PO_BUDGET_ACCOUNT%TYPE INDEX BY BINARY_INTEGER;
35090 TYPE t_array_source_25 IS TABLE OF CST_XLA_INV_REF_V.ENCUM_REVERSAL_AMOUNT_ENTERED%TYPE INDEX BY BINARY_INTEGER;
35091 TYPE t_array_source_26 IS TABLE OF CST_XLA_INV_REF_V.ENCUMBRANCE_REVERSAL_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
35092 TYPE t_array_source_27 IS TABLE OF PSA_CST_XLA_UPG_V.CST_ENCUM_UPG_OPTION%TYPE INDEX BY BINARY_INTEGER;
35093 TYPE t_array_source_28 IS TABLE OF PO_HEADERS_REF_V.PURCH_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
35094 TYPE t_array_source_31 IS TABLE OF PO_DISTS_REF_V.RESERVED_FLAG%TYPE INDEX BY BINARY_INTEGER;
35095 TYPE t_array_source_42 IS TABLE OF CST_XLA_INV_HEADERS_V.TRANSFER_TO_GL_INDICATOR%TYPE INDEX BY BINARY_INTEGER;
35096 
35097 TYPE t_array_source_7 IS TABLE OF CST_XLA_INV_LINES_V.ACCOUNTING_LINE_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
35098 TYPE t_array_source_8 IS TABLE OF CST_XLA_INV_LINES_V.DISTRIBUTION_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
35099 TYPE t_array_source_11 IS TABLE OF CST_XLA_INV_LINES_V.CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
35100 
35101 l_array_source_1              t_array_source_1;
35102 l_array_source_2              t_array_source_2;
35103 l_array_source_3              t_array_source_3;
35104 l_array_source_4              t_array_source_4;
35105 l_array_source_5              t_array_source_5;
35106 l_array_source_9              t_array_source_9;
35107 l_array_source_9_meaning      t_array_lookup_meaning;
35108 l_array_source_16              t_array_source_16;
35109 l_array_source_17              t_array_source_17;
35110 l_array_source_19              t_array_source_19;
35111 l_array_source_20              t_array_source_20;
35112 l_array_source_21              t_array_source_21;
35113 l_array_source_22              t_array_source_22;
35114 l_array_source_23              t_array_source_23;
35115 l_array_source_24              t_array_source_24;
35116 l_array_source_25              t_array_source_25;
35117 l_array_source_26              t_array_source_26;
35118 l_array_source_27              t_array_source_27;
35119 l_array_source_28              t_array_source_28;
35120 l_array_source_31              t_array_source_31;
35121 l_array_source_42              t_array_source_42;
35122 l_array_source_42_meaning      t_array_lookup_meaning;
35123 
35124 l_array_source_7      t_array_source_7;
35125 l_array_source_8      t_array_source_8;
35126 l_array_source_11      t_array_source_11;
35127 
35128 --
35129 CURSOR header_cur
35130 IS
35131 SELECT /*+ leading(xet) cardinality(xet,1) */
35132 -- Event Type Code: RET_RI_INV
35133 -- Event Class Code: PURCHASE_ORDER
35134     xet.entity_id
35135   , xet.legal_entity_id
35136   , xet.entity_code
35137   , xet.transaction_number
35138   , xet.event_id
35139   , xet.event_class_code
35140   , xet.event_type_code
35141   , xet.event_number
35142   , xet.event_date
35143   , xet.transaction_date
35144   , xet.reference_num_1
35145   , xet.reference_num_2
35146   , xet.reference_num_3
35147   , xet.reference_num_4
35148   , xet.reference_char_1
35149   , xet.reference_char_2
35150   , xet.reference_char_3
35151   , xet.reference_char_4
35152   , xet.reference_date_1
35153   , xet.reference_date_2
35154   , xet.reference_date_3
35155   , xet.reference_date_4
35156   , xet.event_created_by
35157   , xet.budgetary_control_flag 
35158   , h1.TRANSACTION_ID    source_1
35159   , h5.ITEM_CONCATENATED_SEGMENTS    source_2
35160   , h4.TRANSACTION_QUANTITY    source_3
35161   , h4.TRANSACTION_UOM    source_4
35162   , h6.INV_TXN_TYPE_DESCRIPTION    source_5
35163   , h1.DISTRIBUTION_TYPE    source_9
35164   , fvl9.meaning   source_9_meaning
35165   , h8.PURCH_ENCUMBRANCE_FLAG    source_16
35166   , h3.ENCUMBRANCE_REVERSAL_FLAG    source_17
35167   , h4.APPLIED_TO_APPL_ID    source_19
35168   , h4.APPLIED_TO_DIST_LINK_TYPE    source_20
35169   , h4.APPLIED_TO_ENTITY_CODE    source_21
35170   , h4.TXN_PO_DISTRIBUTION_ID    source_22
35171   , h4.APPLIED_TO_PO_DOC_ID    source_23
35172   , h7.PO_BUDGET_ACCOUNT    source_24
35173   , h4.ENCUM_REVERSAL_AMOUNT_ENTERED    source_25
35174   , h4.ENCUMBRANCE_REVERSAL_AMOUNT    source_26
35175   , h9.CST_ENCUM_UPG_OPTION    source_27
35176   , h8.PURCH_ENCUMBRANCE_TYPE_ID    source_28
35177   , h7.RESERVED_FLAG    source_31
35178   , h1.TRANSFER_TO_GL_INDICATOR    source_42
35179   , fvl42.meaning   source_42_meaning
35180   FROM xla_events_gt     xet 
35181   , CST_XLA_INV_HEADERS_V  h1
35182   , CST_XLA_INV_ORG_PARAMS_REF_V  h3
35183   , CST_XLA_INV_REF_V  h4
35184   , CST_XLA_INV_SYSTEM_ITEMS_REF_V  h5
35185   , CST_XLA_INV_TXN_TYPES_REF_V  h6
35186   , PO_DISTS_REF_V  h7
35187   , PO_HEADERS_REF_V  h8
35188   , PSA_CST_XLA_UPG_V  h9
35189   , fnd_lookup_values    fvl9
35190   , fnd_lookup_values    fvl42
35191  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
35192    and xet.event_type_code = C_EVENT_TYPE_CODE
35193    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
35194  AND h3.INV_ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h4.ref_transaction_id = h1.transaction_id AND h5.INVENTORY_ITEM_ID  (+) = h1.INVENTORY_ITEM_ID  AND h5.ORGANIZATION_ID  (+) = h1.ORGANIZATION_ID AND h6.INV_TRANSACTION_TYPE_ID = h1.TRANSACTION_TYPE_ID AND h4.txn_po_header_id = h7.po_header_id  (+)  AND h4.txn_po_distribution_id = h7.po_distribution_id (+)  AND h4.txn_po_header_id = h8.po_header_id (+)  AND h4.rcv_transaction_id = h9.transaction_id (+)    AND fvl9.lookup_type(+)         = 
35195 'CST_DISTRIBUTION_TYPE'
35196   AND fvl9.lookup_code(+)         = h1.DISTRIBUTION_TYPE
35197   AND fvl9.view_application_id(+) = 700
35198   AND fvl9.language(+)            = USERENV('LANG')
35199      AND fvl42.lookup_type(+)         = 'YES_NO'
35200   AND fvl42.lookup_code(+)         = h1.TRANSFER_TO_GL_INDICATOR
35201   AND fvl42.view_application_id(+) = 0
35202   AND fvl42.language(+)            = USERENV('LANG')
35203   
35204  ORDER BY event_id
35205 ;
35206 
35207 
35208 --
35209 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
35210 IS
35211 SELECT /*+ leading(xet) cardinality(xet,1) */
35212 -- Event Type Code: RET_RI_INV
35213 -- Event Class Code: PURCHASE_ORDER
35214     xet.entity_id
35215    ,xet.legal_entity_id
35216    ,xet.entity_code
35217    ,xet.transaction_number
35218    ,xet.event_id
35219    ,xet.event_class_code
35220    ,xet.event_type_code
35221    ,xet.event_number
35222    ,xet.event_date
35223    ,xet.transaction_date
35224    ,xet.reference_num_1
35225    ,xet.reference_num_2
35226    ,xet.reference_num_3
35227    ,xet.reference_num_4
35228    ,xet.reference_char_1
35229    ,xet.reference_char_2
35230    ,xet.reference_char_3
35231    ,xet.reference_char_4
35232    ,xet.reference_date_1
35233    ,xet.reference_date_2
35234    ,xet.reference_date_3
35235    ,xet.reference_date_4
35236    ,xet.event_created_by
35237    ,xet.budgetary_control_flag  , l2.LINE_NUMBER  
35238   , l2.ACCOUNTING_LINE_TYPE_CODE    source_7
35239   , l2.DISTRIBUTION_IDENTIFIER    source_8
35240   , l2.CURRENCY_CODE    source_11
35241   FROM xla_events_gt     xet 
35242   , CST_XLA_INV_LINES_V  l2
35243  WHERE xet.event_id between x_first_event_id and x_last_event_id
35244    and xet.event_date between p_pad_start_date and p_pad_end_date
35245    and xet.event_type_code = C_EVENT_TYPE_CODE
35246    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
35247 ;
35248 
35249 --
35250 BEGIN
35251 IF g_log_enabled THEN
35252    l_log_module := C_DEFAULT_MODULE||'.EventType_43';
35253 END IF;
35254 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35255    trace
35256       (p_msg      => 'BEGIN of EventType_43'
35257       ,p_level    => C_LEVEL_PROCEDURE
35258       ,p_module   => l_log_module);
35259 END IF;
35260 
35261 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
35262    trace
35263       (p_msg      => 'p_application_id = '||p_application_id||
35264                      ' - p_base_ledger_id = '||p_base_ledger_id||
35265                      ' - p_target_ledger_id  = '||p_target_ledger_id||
35266                      ' - p_language = '||p_language||
35267                      ' - p_currency_code = '||p_currency_code||
35268                      ' - p_sla_ledger_id = '||p_sla_ledger_id
35269       ,p_level    => C_LEVEL_STATEMENT
35270       ,p_module   => l_log_module);
35271 END IF;
35272 --
35273 -- initialze arrays
35274 --
35275 g_array_event.DELETE;
35276 l_rec_array_event := l_null_rec_array_event;
35277 --
35278 --------------------------------------
35279 -- 4262811 Initialze MPA Line Number
35280 --------------------------------------
35281 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
35282 
35283 --
35284 
35285 --
35286 OPEN header_cur;
35287 --
35288 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
35289    trace
35290    (p_msg      => 'SQL - FETCH header_cur'
35291    ,p_level    => C_LEVEL_STATEMENT
35292    ,p_module   => l_log_module);
35293 END IF;
35294 --
35295 LOOP
35296 FETCH header_cur BULK COLLECT INTO
35297         l_array_entity_id
35298       , l_array_legal_entity_id
35299       , l_array_entity_code
35300       , l_array_transaction_num
35301       , l_array_event_id
35302       , l_array_class_code
35303       , l_array_event_type
35304       , l_array_event_number
35305       , l_array_event_date
35306       , l_array_transaction_date
35307       , l_array_reference_num_1
35308       , l_array_reference_num_2
35309       , l_array_reference_num_3
35310       , l_array_reference_num_4
35311       , l_array_reference_char_1
35312       , l_array_reference_char_2
35313       , l_array_reference_char_3
35314       , l_array_reference_char_4
35315       , l_array_reference_date_1
35316       , l_array_reference_date_2
35317       , l_array_reference_date_3
35318       , l_array_reference_date_4
35319       , l_array_event_created_by
35320       , l_array_budgetary_control_flag 
35321       , l_array_source_1
35322       , l_array_source_2
35323       , l_array_source_3
35324       , l_array_source_4
35325       , l_array_source_5
35326       , l_array_source_9
35327       , l_array_source_9_meaning
35328       , l_array_source_16
35329       , l_array_source_17
35330       , l_array_source_19
35331       , l_array_source_20
35332       , l_array_source_21
35333       , l_array_source_22
35334       , l_array_source_23
35335       , l_array_source_24
35336       , l_array_source_25
35337       , l_array_source_26
35338       , l_array_source_27
35339       , l_array_source_28
35340       , l_array_source_31
35341       , l_array_source_42
35342       , l_array_source_42_meaning
35343       LIMIT l_rows;
35344 --
35345 IF (C_LEVEL_EVENT >= g_log_level) THEN
35346    trace
35347    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
35348    ,p_level    => C_LEVEL_EVENT
35349    ,p_module   => l_log_module);
35350 END IF;
35351 --
35352 EXIT WHEN l_array_entity_id.COUNT = 0;
35353 
35354 -- initialize arrays
35355 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
35356 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
35357 
35358 --
35359 -- Bug 4458708
35360 --
35361 XLA_AE_LINES_PKG.g_LineNumber := 0;
35362 
35363 
35364 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
35365 g_last_hdr_idx := l_array_event_id.LAST;
35366 --
35367 -- loop for the headers. Each iteration is for each header extract row
35368 -- fetched in header cursor
35369 --
35370 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
35371 
35372 --
35373 -- set event info as cache for other routines to refer event attributes
35374 --
35375 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
35376    (p_application_id           => p_application_id
35377    ,p_primary_ledger_id        => p_primary_ledger_id
35378    ,p_base_ledger_id           => p_base_ledger_id
35379    ,p_target_ledger_id         => p_target_ledger_id
35380    ,p_entity_id                => l_array_entity_id(hdr_idx)
35381    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
35382    ,p_entity_code              => l_array_entity_code(hdr_idx)
35383    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
35384    ,p_event_id                 => l_array_event_id(hdr_idx)
35385    ,p_event_class_code         => l_array_class_code(hdr_idx)
35386    ,p_event_type_code          => l_array_event_type(hdr_idx)
35387    ,p_event_number             => l_array_event_number(hdr_idx)
35388    ,p_event_date               => l_array_event_date(hdr_idx)
35389    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
35390    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
35391    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
35392    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
35393    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
35394    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
35395    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
35396    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
35397    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
35398    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
35399    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
35400    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
35401    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
35402    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
35403    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
35404 
35405 --
35406 -- set the status of entry to C_VALID (0)
35407 --
35408 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
35409 
35410 --
35411 -- initialize a row for ae header
35412 --
35413 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
35414 
35415 l_event_id := l_array_event_id(hdr_idx);
35416 
35417 --
35418 -- storing the hdr_idx for event. May be used by line cursor.
35419 --
35420 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
35421 
35422 --
35423 -- store sources from header extract. This can be improved to
35424 -- store only those sources from header extract that may be used in lines
35425 --
35426 
35427 g_array_event(l_event_id).array_value_num('source_1') := l_array_source_1(hdr_idx);
35428 g_array_event(l_event_id).array_value_char('source_2') := l_array_source_2(hdr_idx);
35429 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
35430 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
35431 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
35432 g_array_event(l_event_id).array_value_char('source_9') := l_array_source_9(hdr_idx);
35433 g_array_event(l_event_id).array_value_char('source_9_meaning') := l_array_source_9_meaning(hdr_idx);
35434 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
35435 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
35436 g_array_event(l_event_id).array_value_num('source_19') := l_array_source_19(hdr_idx);
35437 g_array_event(l_event_id).array_value_char('source_20') := l_array_source_20(hdr_idx);
35438 g_array_event(l_event_id).array_value_char('source_21') := l_array_source_21(hdr_idx);
35439 g_array_event(l_event_id).array_value_num('source_22') := l_array_source_22(hdr_idx);
35440 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
35441 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
35442 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
35443 g_array_event(l_event_id).array_value_num('source_26') := l_array_source_26(hdr_idx);
35444 g_array_event(l_event_id).array_value_char('source_27') := l_array_source_27(hdr_idx);
35445 g_array_event(l_event_id).array_value_num('source_28') := l_array_source_28(hdr_idx);
35446 g_array_event(l_event_id).array_value_char('source_31') := l_array_source_31(hdr_idx);
35447 g_array_event(l_event_id).array_value_char('source_42') := l_array_source_42(hdr_idx);
35448 g_array_event(l_event_id).array_value_char('source_42_meaning') := l_array_source_42_meaning(hdr_idx);
35449 
35450 --
35451 -- initilaize the status of ae headers for diffrent balance types
35452 -- the status is initialised to C_NOT_CREATED (2)
35453 --
35454 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
35455 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
35456 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
35457 
35458 --
35459 -- call api to validate and store accounting attributes for header
35460 --
35461 
35462 ------------------------------------------------------------
35463 -- Accrual Reversal : to get date for Standard Source (NONE)
35464 ------------------------------------------------------------
35465 l_acc_rev_gl_date_source := NULL;
35466 
35467      l_rec_acct_attrs.array_acct_attr_code(1)   := 'ENCUMBRANCE_TYPE_ID';
35468       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_28');
35469      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
35470       l_rec_acct_attrs.array_date_value(2) := 
35471 xla_ae_sources_pkg.GetSystemSourceDate(
35472    p_source_code           => 'XLA_REFERENCE_DATE_1'
35473  , p_source_type_code      => 'Y'
35474  , p_source_application_id =>  602
35475 );
35476      l_rec_acct_attrs.array_acct_attr_code(3)   := 'GL_TRANSFER_FLAG';
35477       l_rec_acct_attrs.array_char_value(3) := g_array_event(l_event_id).array_value_char('source_42');
35478 
35479 
35480 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
35481 
35482 XLA_AE_HEADER_PKG.SetJeCategoryName;
35483 
35484 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
35485 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
35486 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
35487 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
35488 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
35489 
35490 
35491 --
35492 xla_ae_header_pkg.SetHdrDescription(
35493    p_description => Description_1 (
35494    p_application_id => p_application_id 
35495  , p_source_1 => g_array_event(l_event_id).array_value_num('source_1')
35496  , p_source_2 => g_array_event(l_event_id).array_value_char('source_2')
35497  , p_source_3 => g_array_event(l_event_id).array_value_num('source_3')
35498  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
35499  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
35500    )
35501 );
35502 --
35503 
35504 -- No header level analytical criteria
35505 
35506 --
35507 --accounting attribute enhancement, bug 3612931
35508 --
35509 l_trx_reversal_source := SUBSTR(NULL, 1,30);
35510 
35511 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
35512    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
35513 
35514    xla_accounting_err_pkg.build_message
35515       (p_appli_s_name            => 'XLA'
35516       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
35517       ,p_token_1                 => 'ACCT_ATTR_NAME'
35518       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
35519       ,p_token_2                 => 'PRODUCT_NAME'
35520       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
35521       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
35522       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
35523       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
35524 
35525 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
35526    --
35527    -- following sets the accounting attributes needed to reverse
35528    -- accounting for a distributeion
35529    --
35530    xla_ae_lines_pkg.SetTrxReversalAttrs
35531       (p_event_id              => l_event_id
35532       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
35533       ,p_trx_reversal_source   => l_trx_reversal_source);
35534 
35535 END IF;
35536 
35537 
35538 ----------------------------------------------------------------
35539 -- 4262811 -  update the header statuses to invalid in need be
35540 ----------------------------------------------------------------
35541 --
35542 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
35543 
35544 
35545   -----------------------------------------------
35546   -- No accrual reversal for the event class/type
35547   -----------------------------------------------
35548 ----------------------------------------------------------------
35549 
35550 --
35551 -- this ends the header loop iteration for one bulk fetch
35552 --
35553 END LOOP;
35554 
35555 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
35556 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
35557 
35558 --
35559 -- insert dummy rows into lines gt table that were created due to
35560 -- transaction reversals
35561 --
35562 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
35563    l_result := XLA_AE_LINES_PKG.InsertLines;
35564 END IF;
35565 
35566 --
35567 -- reset the temp_line_num for each set of events fetched from header
35568 -- cursor rather than doing it for each new event in line cursor
35569 -- Bug 3939231
35570 --
35571 xla_ae_lines_pkg.g_temp_line_num := 0;
35572 
35573 
35574 
35575 --
35576 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
35577 --
35578 --
35579 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
35580 
35581       trace
35582          (p_msg      => 'SQL - FETCH line_cur'
35583          ,p_level    => C_LEVEL_STATEMENT
35584          ,p_module   => l_log_module);
35585 
35586 END IF;
35587 --
35588 --
35589 LOOP
35590   --
35591   FETCH line_cur BULK COLLECT INTO
35592         l_array_entity_id
35593       , l_array_legal_entity_id
35594       , l_array_entity_code
35595       , l_array_transaction_num
35596       , l_array_event_id
35597       , l_array_class_code
35598       , l_array_event_type
35599       , l_array_event_number
35600       , l_array_event_date
35601       , l_array_transaction_date
35602       , l_array_reference_num_1
35603       , l_array_reference_num_2
35604       , l_array_reference_num_3
35605       , l_array_reference_num_4
35606       , l_array_reference_char_1
35607       , l_array_reference_char_2
35608       , l_array_reference_char_3
35609       , l_array_reference_char_4
35610       , l_array_reference_date_1
35611       , l_array_reference_date_2
35612       , l_array_reference_date_3
35613       , l_array_reference_date_4
35614       , l_array_event_created_by
35615       , l_array_budgetary_control_flag
35616       , l_array_extract_line_num 
35617       , l_array_source_7
35618       , l_array_source_8
35619       , l_array_source_11
35620       LIMIT l_rows;
35621 
35622   --
35623   IF (C_LEVEL_EVENT >= g_log_level) THEN
35624             trace
35625                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
35626                ,p_level    => C_LEVEL_EVENT
35627                ,p_module   => l_log_module);
35628   END IF;
35629   --
35630   EXIT WHEN l_array_entity_id.count = 0;
35631 
35632   XLA_AE_LINES_PKG.g_rec_lines := null;
35633 
35634 --
35635 -- Bug 4458708
35636 --
35637 XLA_AE_LINES_PKG.g_LineNumber := 0;
35638 --
35639 --
35640 
35641 FOR Idx IN 1..l_array_event_id.count LOOP
35642    --
35643    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
35644    --
35645    l_event_id := l_array_event_id(idx);  -- 5648433
35646 
35647    --
35648    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
35649    --
35650 
35651    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
35652              (g_array_event(l_event_id).array_value_num('header_index'))
35653          ,'N'
35654          ) <> 'Y'
35655    THEN
35656       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
35657          trace
35658             (p_msg      => 'Trancaction revesal option is not Y '
35659             ,p_level    => C_LEVEL_STATEMENT
35660             ,p_module   => l_log_module);
35661       END IF;
35662 
35663 --
35664 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
35665 --
35666 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
35667 --
35668 -- set event info as cache for other routines to refer event attributes
35669 --
35670 
35671 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
35672    l_previous_event_id := l_event_id;
35673 
35674    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
35675       (p_application_id           => p_application_id
35676       ,p_primary_ledger_id        => p_primary_ledger_id
35677       ,p_base_ledger_id           => p_base_ledger_id
35678       ,p_target_ledger_id         => p_target_ledger_id
35679       ,p_entity_id                => l_array_entity_id(Idx)
35680       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
35681       ,p_entity_code              => l_array_entity_code(Idx)
35682       ,p_transaction_num          => l_array_transaction_num(Idx)
35683       ,p_event_id                 => l_array_event_id(Idx)
35684       ,p_event_class_code         => l_array_class_code(Idx)
35685       ,p_event_type_code          => l_array_event_type(Idx)
35686       ,p_event_number             => l_array_event_number(Idx)
35687       ,p_event_date               => l_array_event_date(Idx)
35688       ,p_transaction_date         => l_array_transaction_date(Idx)
35689       ,p_reference_num_1          => l_array_reference_num_1(Idx)
35690       ,p_reference_num_2          => l_array_reference_num_2(Idx)
35691       ,p_reference_num_3          => l_array_reference_num_3(Idx)
35692       ,p_reference_num_4          => l_array_reference_num_4(Idx)
35693       ,p_reference_char_1         => l_array_reference_char_1(Idx)
35694       ,p_reference_char_2         => l_array_reference_char_2(Idx)
35695       ,p_reference_char_3         => l_array_reference_char_3(Idx)
35696       ,p_reference_char_4         => l_array_reference_char_4(Idx)
35697       ,p_reference_date_1         => l_array_reference_date_1(Idx)
35698       ,p_reference_date_2         => l_array_reference_date_2(Idx)
35699       ,p_reference_date_3         => l_array_reference_date_3(Idx)
35700       ,p_reference_date_4         => l_array_reference_date_4(Idx)
35701       ,p_event_created_by         => l_array_event_created_by(Idx)
35702       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
35703        --
35704 END IF;
35705 
35706 
35707 
35708 --
35709 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
35710 
35711 l_acct_reversal_source := SUBSTR(NULL, 1,30);
35712 
35713 IF l_continue_with_lines THEN
35714    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
35715       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
35716 
35717       xla_accounting_err_pkg.build_message
35718          (p_appli_s_name            => 'XLA'
35719          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
35720          ,p_token_1                 => 'LINE_NUMBER'
35721          ,p_value_1                 => l_array_extract_line_num(Idx)
35722          ,p_token_2                 => 'PRODUCT_NAME'
35723          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
35724          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
35725          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
35726          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
35727 
35728    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
35729       --
35730       -- following sets the accounting attributes needed to reverse
35731       -- accounting for a distributeion
35732       --
35733 
35734       --
35735       -- 5217187
35736       --
35737       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
35738       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
35739                                        g_array_event(l_event_id).array_value_num('header_index'));
35740       --
35741       --
35742 
35743       -- No reversal code generated
35744 
35745       xla_ae_lines_pkg.SetAcctReversalAttrs
35746          (p_event_id             => l_event_id
35747          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
35748          ,p_calculate_acctd_flag => l_calculate_acctd_flag
35749          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
35750    END IF;
35751 
35752    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
35753        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
35754 
35755 --
35756 AcctLineType_10 (
35757  p_application_id  => p_application_id
35758  ,p_event_id     => l_event_id
35759  ,p_calculate_acctd_flag => l_calculate_acctd_flag
35760  ,p_calculate_g_l_flag => l_calculate_g_l_flag
35761  ,p_actual_flag => l_actual_flag
35762  ,p_balance_type_code => l_balance_type_code
35763  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
35764  
35765  , p_source_8 => l_array_source_8(Idx)
35766  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
35767  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
35768  , p_source_11 => l_array_source_11(Idx)
35769  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
35770  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
35771  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
35772  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
35773  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
35774  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
35775  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
35776  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
35777  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
35778  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
35779  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
35780  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
35781  );
35782 If(l_balance_type_code = 'A') THEN
35783   l_actual_gain_loss_ref := l_gain_or_loss_ref;
35784 END IF;
35785 
35786 --
35787 
35788 
35789 --
35790 AcctLineType_20 (
35791  p_application_id  => p_application_id
35792  ,p_event_id     => l_event_id
35793  ,p_calculate_acctd_flag => l_calculate_acctd_flag
35794  ,p_calculate_g_l_flag => l_calculate_g_l_flag
35795  ,p_actual_flag => l_actual_flag
35796  ,p_balance_type_code => l_balance_type_code
35797  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
35798  
35799  , p_source_7 => l_array_source_7(Idx)
35800  , p_source_8 => l_array_source_8(Idx)
35801  , p_source_9 => g_array_event(l_event_id).array_value_char('source_9')
35802  , p_source_9_meaning => g_array_event(l_event_id).array_value_char('source_9_meaning')
35803  , p_source_11 => l_array_source_11(Idx)
35804  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
35805  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
35806  , p_source_19 => g_array_event(l_event_id).array_value_num('source_19')
35807  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
35808  , p_source_21 => g_array_event(l_event_id).array_value_char('source_21')
35809  , p_source_22 => g_array_event(l_event_id).array_value_num('source_22')
35810  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
35811  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
35812  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
35813  , p_source_26 => g_array_event(l_event_id).array_value_num('source_26')
35814  , p_source_27 => g_array_event(l_event_id).array_value_char('source_27')
35815  , p_source_28 => g_array_event(l_event_id).array_value_num('source_28')
35816  , p_source_31 => g_array_event(l_event_id).array_value_char('source_31')
35817  );
35818 If(l_balance_type_code = 'A') THEN
35819   l_actual_gain_loss_ref := l_gain_or_loss_ref;
35820 END IF;
35821 
35822 --
35823 
35824       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
35825       -- or secondary ledger that has different currency with primary
35826       -- or alc that is calculated by sla
35827       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
35828             (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'))
35829 
35830 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
35831 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
35832           AND (l_actual_flag = 'A')) THEN
35833         XLA_AE_LINES_PKG.CreateGainOrLossLines(
35834           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
35835          ,p_application_id   => p_application_id
35836          ,p_amb_context_code => 'DEFAULT'
35837          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
35838          ,p_event_class_code => C_EVENT_CLASS_CODE
35839          ,p_event_type_code  => C_EVENT_TYPE_CODE
35840          
35841          ,p_gain_ccid        => -1
35842          ,p_loss_ccid        => -1
35843 
35844          ,p_actual_flag      => l_actual_flag
35845          ,p_enc_flag         => null
35846          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
35847          ,p_enc_g_l_ref      => null
35848          );
35849       END IF;
35850    END IF;
35851 END IF;
35852 
35853    ELSE
35854       --
35855       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
35856       --
35857       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
35858          trace
35859             (p_msg      => 'Trancaction revesal option is Y'
35860             ,p_level    => C_LEVEL_STATEMENT
35861             ,p_module   => l_log_module);
35862       END IF;
35863    END IF;
35864 
35865 END LOOP;
35866 l_result := XLA_AE_LINES_PKG.InsertLines ;
35867 end loop;
35868 close line_cur;
35869 
35870 
35871 --
35872 -- insert headers into xla_ae_headers_gt table
35873 --
35874 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
35875 
35876 -- insert into errors table here.
35877 
35878 END LOOP;
35879 
35880 --
35881 -- 4865292
35882 --
35883 -- Compare g_hdr_extract_count with event count in
35884 -- CreateHeadersAndLines.
35885 --
35886 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
35887 
35888 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
35889    trace (p_msg     => '# rows extracted from header extract objects '
35890                     || ' (running total): '
35891                     || g_hdr_extract_count
35892          ,p_level   => C_LEVEL_STATEMENT
35893          ,p_module  => l_log_module);
35894 END IF;
35895 
35896 CLOSE header_cur;
35897 --
35898 
35899 --
35900 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35901    trace
35902       (p_msg      => 'END of EventType_43'
35903       ,p_level    => C_LEVEL_PROCEDURE
35904       ,p_module   => l_log_module);
35905 END IF;
35906 --
35907 RETURN l_result;
35908 EXCEPTION
35909 WHEN xla_exceptions_pkg.application_exception THEN
35910    
35911 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
35912 
35913    
35914 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
35915 
35916    RAISE;
35917 
35918 WHEN NO_DATA_FOUND THEN
35919 
35920 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
35921 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
35922 
35923 FOR header_record IN header_cur
35924 LOOP
35925     l_array_header_events(header_record.event_id) := header_record.event_id;
35926 END LOOP;
35927 
35928 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
35929 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
35930 
35931 fnd_file.put_line(fnd_file.LOG, '                    ');
35932 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
35933 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
35934 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
35935 
35936 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
35937 LOOP
35938 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
35939 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
35940         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
35941 	END IF;
35942 END LOOP;
35943 
35944 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
35945 fnd_file.put_line(fnd_file.LOG, '                    ');
35946 
35947 
35948 xla_exceptions_pkg.raise_message
35949       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_43');
35950 
35951 
35952 WHEN OTHERS THEN
35953    xla_exceptions_pkg.raise_message
35954       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.EventType_43');
35955 END EventType_43;
35956 --
35957 
35958 --
35959 --+============================================+
35960 --|                                            |
35961 --|  PRIVATE FUNCTION                          |
35962 --|                                            |
35963 --+============================================+
35964 --
35965 FUNCTION CreateHeadersAndLines
35966        (p_application_id         IN NUMBER
35967        ,p_base_ledger_id         IN NUMBER
35968        ,p_target_ledger_id       IN NUMBER
35969        ,p_pad_start_date         IN DATE
35970        ,p_pad_end_date           IN DATE
35971        ,p_primary_ledger_id      IN NUMBER)
35972 RETURN BOOLEAN IS
35973 l_created                   BOOLEAN:=FALSE;
35974 l_event_id                  NUMBER;
35975 l_event_date                DATE;
35976 l_language                  VARCHAR2(30);
35977 l_currency_code             VARCHAR2(30);
35978 l_sla_ledger_id             NUMBER;
35979 l_log_module                VARCHAR2(240);
35980 
35981 BEGIN
35982 --
35983 IF g_log_enabled THEN
35984    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
35985 END IF;
35986 --
35987 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35988    trace
35989       (p_msg      => 'BEGIN of CreateHeadersAndLines'
35990       ,p_level    => C_LEVEL_PROCEDURE
35991       ,p_module   => l_log_module);
35992 END IF;
35993 
35994 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
35995 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
35996 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
35997 
35998 --
35999 -- initialize array of lines with NULL
36000 --
36001 xla_ae_lines_pkg.SetNullLine;
36002 
36003 --
36004 -- initialize header extract count -- Bug 4865292
36005 --
36006 g_hdr_extract_count:= 0;
36007 
36008 
36009 l_created := EventClass_27(
36010    p_application_id         => p_application_id
36011  , p_base_ledger_id         => p_base_ledger_id
36012  , p_target_ledger_id       => p_target_ledger_id
36013  , p_language               => l_language
36014  , p_currency_code          => l_currency_code
36015  , p_sla_ledger_id          => l_sla_ledger_id
36016  , p_pad_start_date         => p_pad_start_date
36017  , p_pad_end_date           => p_pad_end_date
36018  , p_primary_ledger_id      => p_primary_ledger_id
36019 );
36020 
36021 
36022 
36023      IF ( g_diagnostics_mode ='Y' ) THEN
36024 
36025          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36026           trace
36027               (p_msg      => 'CALL Transaction Objects Diagnostics'
36028               ,p_level    => C_LEVEL_STATEMENT
36029               ,p_module   => l_log_module);
36030 
36031          END IF;
36032 
36033          insert_sources_27(
36034                           p_target_ledger_id => p_target_ledger_id
36035                         , p_language         => l_language
36036                         , p_sla_ledger_id    => l_sla_ledger_id
36037                         , p_pad_start_date   => p_pad_start_date
36038                         , p_pad_end_date     => p_pad_end_date
36039                           );
36040 
36041      END IF;
36042 
36043 l_created := EventClass_28(
36044    p_application_id         => p_application_id
36045  , p_base_ledger_id         => p_base_ledger_id
36046  , p_target_ledger_id       => p_target_ledger_id
36047  , p_language               => l_language
36048  , p_currency_code          => l_currency_code
36049  , p_sla_ledger_id          => l_sla_ledger_id
36050  , p_pad_start_date         => p_pad_start_date
36051  , p_pad_end_date           => p_pad_end_date
36052  , p_primary_ledger_id      => p_primary_ledger_id
36053 );
36054 
36055 
36056 
36057      IF ( g_diagnostics_mode ='Y' ) THEN
36058 
36059          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36060           trace
36061               (p_msg      => 'CALL Transaction Objects Diagnostics'
36062               ,p_level    => C_LEVEL_STATEMENT
36063               ,p_module   => l_log_module);
36064 
36065          END IF;
36066 
36067          insert_sources_28(
36068                           p_target_ledger_id => p_target_ledger_id
36069                         , p_language         => l_language
36070                         , p_sla_ledger_id    => l_sla_ledger_id
36071                         , p_pad_start_date   => p_pad_start_date
36072                         , p_pad_end_date     => p_pad_end_date
36073                           );
36074 
36075      END IF;
36076 
36077  l_created :=  EventType_29(
36078    p_application_id         => p_application_id
36079  , p_base_ledger_id         => p_base_ledger_id
36080  , p_target_ledger_id       => p_target_ledger_id
36081  , p_language               => l_language
36082  , p_currency_code          => l_currency_code
36083  , p_sla_ledger_id          => l_sla_ledger_id
36084  , p_pad_start_date         => p_pad_start_date
36085  , p_pad_end_date           => p_pad_end_date
36086  , p_primary_ledger_id      => p_primary_ledger_id
36087 );
36088 
36089 
36090 
36091      IF ( g_diagnostics_mode ='Y' ) THEN
36092 
36093          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36094           trace
36095               (p_msg      => 'CALL Transaction Objects Diagnostics'
36096               ,p_level    => C_LEVEL_STATEMENT
36097               ,p_module   => l_log_module);
36098 
36099          END IF;
36100 
36101          insert_sources_29(
36102                           p_target_ledger_id => p_target_ledger_id
36103                         , p_language         => l_language
36104                         , p_sla_ledger_id    => l_sla_ledger_id
36105                         , p_pad_start_date   => p_pad_start_date
36106                         , p_pad_end_date     => p_pad_end_date
36107                           );
36108 
36109      END IF;
36110 
36111  l_created :=  EventType_30(
36112    p_application_id         => p_application_id
36113  , p_base_ledger_id         => p_base_ledger_id
36114  , p_target_ledger_id       => p_target_ledger_id
36115  , p_language               => l_language
36116  , p_currency_code          => l_currency_code
36117  , p_sla_ledger_id          => l_sla_ledger_id
36118  , p_pad_start_date         => p_pad_start_date
36119  , p_pad_end_date           => p_pad_end_date
36120  , p_primary_ledger_id      => p_primary_ledger_id
36121 );
36122 
36123 
36124 
36125      IF ( g_diagnostics_mode ='Y' ) THEN
36126 
36127          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36128           trace
36129               (p_msg      => 'CALL Transaction Objects Diagnostics'
36130               ,p_level    => C_LEVEL_STATEMENT
36131               ,p_module   => l_log_module);
36132 
36133          END IF;
36134 
36135          insert_sources_30(
36136                           p_target_ledger_id => p_target_ledger_id
36137                         , p_language         => l_language
36138                         , p_sla_ledger_id    => l_sla_ledger_id
36139                         , p_pad_start_date   => p_pad_start_date
36140                         , p_pad_end_date     => p_pad_end_date
36141                           );
36142 
36143      END IF;
36144 
36145  l_created :=  EventType_31(
36146    p_application_id         => p_application_id
36147  , p_base_ledger_id         => p_base_ledger_id
36148  , p_target_ledger_id       => p_target_ledger_id
36149  , p_language               => l_language
36150  , p_currency_code          => l_currency_code
36151  , p_sla_ledger_id          => l_sla_ledger_id
36152  , p_pad_start_date         => p_pad_start_date
36153  , p_pad_end_date           => p_pad_end_date
36154  , p_primary_ledger_id      => p_primary_ledger_id
36155 );
36156 
36157 
36158 
36159      IF ( g_diagnostics_mode ='Y' ) THEN
36160 
36161          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36162           trace
36163               (p_msg      => 'CALL Transaction Objects Diagnostics'
36164               ,p_level    => C_LEVEL_STATEMENT
36165               ,p_module   => l_log_module);
36166 
36167          END IF;
36168 
36169          insert_sources_31(
36170                           p_target_ledger_id => p_target_ledger_id
36171                         , p_language         => l_language
36172                         , p_sla_ledger_id    => l_sla_ledger_id
36173                         , p_pad_start_date   => p_pad_start_date
36174                         , p_pad_end_date     => p_pad_end_date
36175                           );
36176 
36177      END IF;
36178 
36179  l_created :=  EventType_32(
36180    p_application_id         => p_application_id
36181  , p_base_ledger_id         => p_base_ledger_id
36182  , p_target_ledger_id       => p_target_ledger_id
36183  , p_language               => l_language
36184  , p_currency_code          => l_currency_code
36185  , p_sla_ledger_id          => l_sla_ledger_id
36186  , p_pad_start_date         => p_pad_start_date
36187  , p_pad_end_date           => p_pad_end_date
36188  , p_primary_ledger_id      => p_primary_ledger_id
36189 );
36190 
36191 
36192 
36193      IF ( g_diagnostics_mode ='Y' ) THEN
36194 
36195          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36196           trace
36197               (p_msg      => 'CALL Transaction Objects Diagnostics'
36198               ,p_level    => C_LEVEL_STATEMENT
36199               ,p_module   => l_log_module);
36200 
36201          END IF;
36202 
36203          insert_sources_32(
36204                           p_target_ledger_id => p_target_ledger_id
36205                         , p_language         => l_language
36206                         , p_sla_ledger_id    => l_sla_ledger_id
36207                         , p_pad_start_date   => p_pad_start_date
36208                         , p_pad_end_date     => p_pad_end_date
36209                           );
36210 
36211      END IF;
36212 
36213  l_created :=  EventType_33(
36214    p_application_id         => p_application_id
36215  , p_base_ledger_id         => p_base_ledger_id
36216  , p_target_ledger_id       => p_target_ledger_id
36217  , p_language               => l_language
36218  , p_currency_code          => l_currency_code
36219  , p_sla_ledger_id          => l_sla_ledger_id
36220  , p_pad_start_date         => p_pad_start_date
36221  , p_pad_end_date           => p_pad_end_date
36222  , p_primary_ledger_id      => p_primary_ledger_id
36223 );
36224 
36225 
36226 
36227      IF ( g_diagnostics_mode ='Y' ) THEN
36228 
36229          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36230           trace
36231               (p_msg      => 'CALL Transaction Objects Diagnostics'
36232               ,p_level    => C_LEVEL_STATEMENT
36233               ,p_module   => l_log_module);
36234 
36235          END IF;
36236 
36237          insert_sources_33(
36238                           p_target_ledger_id => p_target_ledger_id
36239                         , p_language         => l_language
36240                         , p_sla_ledger_id    => l_sla_ledger_id
36241                         , p_pad_start_date   => p_pad_start_date
36242                         , p_pad_end_date     => p_pad_end_date
36243                           );
36244 
36245      END IF;
36246 
36247  l_created :=  EventType_34(
36248    p_application_id         => p_application_id
36249  , p_base_ledger_id         => p_base_ledger_id
36250  , p_target_ledger_id       => p_target_ledger_id
36251  , p_language               => l_language
36252  , p_currency_code          => l_currency_code
36253  , p_sla_ledger_id          => l_sla_ledger_id
36254  , p_pad_start_date         => p_pad_start_date
36255  , p_pad_end_date           => p_pad_end_date
36256  , p_primary_ledger_id      => p_primary_ledger_id
36257 );
36258 
36259 
36260 
36261      IF ( g_diagnostics_mode ='Y' ) THEN
36262 
36263          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36264           trace
36265               (p_msg      => 'CALL Transaction Objects Diagnostics'
36266               ,p_level    => C_LEVEL_STATEMENT
36267               ,p_module   => l_log_module);
36268 
36269          END IF;
36270 
36271          insert_sources_34(
36272                           p_target_ledger_id => p_target_ledger_id
36273                         , p_language         => l_language
36274                         , p_sla_ledger_id    => l_sla_ledger_id
36275                         , p_pad_start_date   => p_pad_start_date
36276                         , p_pad_end_date     => p_pad_end_date
36277                           );
36278 
36279      END IF;
36280 
36281  l_created :=  EventType_35(
36282    p_application_id         => p_application_id
36283  , p_base_ledger_id         => p_base_ledger_id
36284  , p_target_ledger_id       => p_target_ledger_id
36285  , p_language               => l_language
36286  , p_currency_code          => l_currency_code
36287  , p_sla_ledger_id          => l_sla_ledger_id
36288  , p_pad_start_date         => p_pad_start_date
36289  , p_pad_end_date           => p_pad_end_date
36290  , p_primary_ledger_id      => p_primary_ledger_id
36291 );
36292 
36293 
36294 
36295      IF ( g_diagnostics_mode ='Y' ) THEN
36296 
36297          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36298           trace
36299               (p_msg      => 'CALL Transaction Objects Diagnostics'
36300               ,p_level    => C_LEVEL_STATEMENT
36301               ,p_module   => l_log_module);
36302 
36303          END IF;
36304 
36305          insert_sources_35(
36306                           p_target_ledger_id => p_target_ledger_id
36307                         , p_language         => l_language
36308                         , p_sla_ledger_id    => l_sla_ledger_id
36309                         , p_pad_start_date   => p_pad_start_date
36310                         , p_pad_end_date     => p_pad_end_date
36311                           );
36312 
36313      END IF;
36314 
36315  l_created :=  EventType_36(
36316    p_application_id         => p_application_id
36317  , p_base_ledger_id         => p_base_ledger_id
36318  , p_target_ledger_id       => p_target_ledger_id
36319  , p_language               => l_language
36320  , p_currency_code          => l_currency_code
36321  , p_sla_ledger_id          => l_sla_ledger_id
36322  , p_pad_start_date         => p_pad_start_date
36323  , p_pad_end_date           => p_pad_end_date
36324  , p_primary_ledger_id      => p_primary_ledger_id
36325 );
36326 
36327 
36328 
36329      IF ( g_diagnostics_mode ='Y' ) THEN
36330 
36331          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36332           trace
36333               (p_msg      => 'CALL Transaction Objects Diagnostics'
36334               ,p_level    => C_LEVEL_STATEMENT
36335               ,p_module   => l_log_module);
36336 
36337          END IF;
36338 
36339          insert_sources_36(
36340                           p_target_ledger_id => p_target_ledger_id
36341                         , p_language         => l_language
36342                         , p_sla_ledger_id    => l_sla_ledger_id
36343                         , p_pad_start_date   => p_pad_start_date
36344                         , p_pad_end_date     => p_pad_end_date
36345                           );
36346 
36347      END IF;
36348 
36349  l_created :=  EventType_37(
36350    p_application_id         => p_application_id
36351  , p_base_ledger_id         => p_base_ledger_id
36352  , p_target_ledger_id       => p_target_ledger_id
36353  , p_language               => l_language
36354  , p_currency_code          => l_currency_code
36355  , p_sla_ledger_id          => l_sla_ledger_id
36356  , p_pad_start_date         => p_pad_start_date
36357  , p_pad_end_date           => p_pad_end_date
36358  , p_primary_ledger_id      => p_primary_ledger_id
36359 );
36360 
36361 
36362 
36363      IF ( g_diagnostics_mode ='Y' ) THEN
36364 
36365          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36366           trace
36367               (p_msg      => 'CALL Transaction Objects Diagnostics'
36368               ,p_level    => C_LEVEL_STATEMENT
36369               ,p_module   => l_log_module);
36370 
36371          END IF;
36372 
36373          insert_sources_37(
36374                           p_target_ledger_id => p_target_ledger_id
36375                         , p_language         => l_language
36376                         , p_sla_ledger_id    => l_sla_ledger_id
36377                         , p_pad_start_date   => p_pad_start_date
36378                         , p_pad_end_date     => p_pad_end_date
36379                           );
36380 
36381      END IF;
36382 
36383  l_created :=  EventType_38(
36384    p_application_id         => p_application_id
36385  , p_base_ledger_id         => p_base_ledger_id
36386  , p_target_ledger_id       => p_target_ledger_id
36387  , p_language               => l_language
36388  , p_currency_code          => l_currency_code
36389  , p_sla_ledger_id          => l_sla_ledger_id
36390  , p_pad_start_date         => p_pad_start_date
36391  , p_pad_end_date           => p_pad_end_date
36392  , p_primary_ledger_id      => p_primary_ledger_id
36393 );
36394 
36395 
36396 
36397      IF ( g_diagnostics_mode ='Y' ) THEN
36398 
36399          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36400           trace
36401               (p_msg      => 'CALL Transaction Objects Diagnostics'
36402               ,p_level    => C_LEVEL_STATEMENT
36403               ,p_module   => l_log_module);
36404 
36405          END IF;
36406 
36407          insert_sources_38(
36408                           p_target_ledger_id => p_target_ledger_id
36409                         , p_language         => l_language
36410                         , p_sla_ledger_id    => l_sla_ledger_id
36411                         , p_pad_start_date   => p_pad_start_date
36412                         , p_pad_end_date     => p_pad_end_date
36413                           );
36414 
36415      END IF;
36416 
36417  l_created :=  EventType_39(
36418    p_application_id         => p_application_id
36419  , p_base_ledger_id         => p_base_ledger_id
36420  , p_target_ledger_id       => p_target_ledger_id
36421  , p_language               => l_language
36422  , p_currency_code          => l_currency_code
36423  , p_sla_ledger_id          => l_sla_ledger_id
36424  , p_pad_start_date         => p_pad_start_date
36425  , p_pad_end_date           => p_pad_end_date
36426  , p_primary_ledger_id      => p_primary_ledger_id
36427 );
36428 
36429 
36430 
36431      IF ( g_diagnostics_mode ='Y' ) THEN
36432 
36433          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36434           trace
36435               (p_msg      => 'CALL Transaction Objects Diagnostics'
36436               ,p_level    => C_LEVEL_STATEMENT
36437               ,p_module   => l_log_module);
36438 
36439          END IF;
36440 
36441          insert_sources_39(
36442                           p_target_ledger_id => p_target_ledger_id
36443                         , p_language         => l_language
36444                         , p_sla_ledger_id    => l_sla_ledger_id
36445                         , p_pad_start_date   => p_pad_start_date
36446                         , p_pad_end_date     => p_pad_end_date
36447                           );
36448 
36449      END IF;
36450 
36451 l_created := EventClass_40(
36452    p_application_id         => p_application_id
36453  , p_base_ledger_id         => p_base_ledger_id
36454  , p_target_ledger_id       => p_target_ledger_id
36455  , p_language               => l_language
36456  , p_currency_code          => l_currency_code
36457  , p_sla_ledger_id          => l_sla_ledger_id
36458  , p_pad_start_date         => p_pad_start_date
36459  , p_pad_end_date           => p_pad_end_date
36460  , p_primary_ledger_id      => p_primary_ledger_id
36461 );
36462 
36463 
36464 
36465      IF ( g_diagnostics_mode ='Y' ) THEN
36466 
36467          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36468           trace
36469               (p_msg      => 'CALL Transaction Objects Diagnostics'
36470               ,p_level    => C_LEVEL_STATEMENT
36471               ,p_module   => l_log_module);
36472 
36473          END IF;
36474 
36475          insert_sources_40(
36476                           p_target_ledger_id => p_target_ledger_id
36477                         , p_language         => l_language
36478                         , p_sla_ledger_id    => l_sla_ledger_id
36479                         , p_pad_start_date   => p_pad_start_date
36480                         , p_pad_end_date     => p_pad_end_date
36481                           );
36482 
36483      END IF;
36484 
36485  l_created :=  EventType_41(
36486    p_application_id         => p_application_id
36487  , p_base_ledger_id         => p_base_ledger_id
36488  , p_target_ledger_id       => p_target_ledger_id
36489  , p_language               => l_language
36490  , p_currency_code          => l_currency_code
36491  , p_sla_ledger_id          => l_sla_ledger_id
36492  , p_pad_start_date         => p_pad_start_date
36493  , p_pad_end_date           => p_pad_end_date
36494  , p_primary_ledger_id      => p_primary_ledger_id
36495 );
36496 
36497 
36498 
36499      IF ( g_diagnostics_mode ='Y' ) THEN
36500 
36501          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36502           trace
36503               (p_msg      => 'CALL Transaction Objects Diagnostics'
36504               ,p_level    => C_LEVEL_STATEMENT
36505               ,p_module   => l_log_module);
36506 
36507          END IF;
36508 
36509          insert_sources_41(
36510                           p_target_ledger_id => p_target_ledger_id
36511                         , p_language         => l_language
36512                         , p_sla_ledger_id    => l_sla_ledger_id
36513                         , p_pad_start_date   => p_pad_start_date
36514                         , p_pad_end_date     => p_pad_end_date
36515                           );
36516 
36517      END IF;
36518 
36519  l_created :=  EventType_42(
36520    p_application_id         => p_application_id
36521  , p_base_ledger_id         => p_base_ledger_id
36522  , p_target_ledger_id       => p_target_ledger_id
36523  , p_language               => l_language
36524  , p_currency_code          => l_currency_code
36525  , p_sla_ledger_id          => l_sla_ledger_id
36526  , p_pad_start_date         => p_pad_start_date
36527  , p_pad_end_date           => p_pad_end_date
36528  , p_primary_ledger_id      => p_primary_ledger_id
36529 );
36530 
36531 
36532 
36533      IF ( g_diagnostics_mode ='Y' ) THEN
36534 
36535          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36536           trace
36537               (p_msg      => 'CALL Transaction Objects Diagnostics'
36538               ,p_level    => C_LEVEL_STATEMENT
36539               ,p_module   => l_log_module);
36540 
36541          END IF;
36542 
36543          insert_sources_42(
36544                           p_target_ledger_id => p_target_ledger_id
36545                         , p_language         => l_language
36546                         , p_sla_ledger_id    => l_sla_ledger_id
36547                         , p_pad_start_date   => p_pad_start_date
36548                         , p_pad_end_date     => p_pad_end_date
36549                           );
36550 
36551      END IF;
36552 
36553  l_created :=  EventType_43(
36554    p_application_id         => p_application_id
36555  , p_base_ledger_id         => p_base_ledger_id
36556  , p_target_ledger_id       => p_target_ledger_id
36557  , p_language               => l_language
36558  , p_currency_code          => l_currency_code
36559  , p_sla_ledger_id          => l_sla_ledger_id
36560  , p_pad_start_date         => p_pad_start_date
36561  , p_pad_end_date           => p_pad_end_date
36562  , p_primary_ledger_id      => p_primary_ledger_id
36563 );
36564 
36565 
36566 
36567      IF ( g_diagnostics_mode ='Y' ) THEN
36568 
36569          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36570           trace
36571               (p_msg      => 'CALL Transaction Objects Diagnostics'
36572               ,p_level    => C_LEVEL_STATEMENT
36573               ,p_module   => l_log_module);
36574 
36575          END IF;
36576 
36577          insert_sources_43(
36578                           p_target_ledger_id => p_target_ledger_id
36579                         , p_language         => l_language
36580                         , p_sla_ledger_id    => l_sla_ledger_id
36581                         , p_pad_start_date   => p_pad_start_date
36582                         , p_pad_end_date     => p_pad_end_date
36583                           );
36584 
36585      END IF;
36586 
36587 
36588  --
36589  -- Bug 4865292
36590  -- When the number of events and that of header extract do not match,
36591  -- set the no header extract flag to indicate there are some issues
36592  -- in header extract.
36593  --
36594  -- Event count context is set in xla_accounting_pkg.unit_processor.
36595  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
36596  -- to report it as a general error.
36597  --
36598  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
36599  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
36600 
36601      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36602         trace
36603           (p_msg      => '# of extracted headers and events does not match'
36604           ,p_level    => C_LEVEL_STATEMENT
36605           ,p_module   => l_log_module);
36606 
36607         trace
36608           (p_msg      => '# of extracted headers: '
36609                          ||g_hdr_extract_count
36610           ,p_level    => C_LEVEL_STATEMENT
36611           ,p_module   => l_log_module);
36612 
36613         trace
36614           (p_msg      => '# of events in xla_events_gt: '
36615                          ||xla_context_pkg.get_event_count_context
36616           ,p_level    => C_LEVEL_STATEMENT
36617           ,p_module   => l_log_module);
36618 
36619         trace
36620           (p_msg      => 'Event No Header Extract Context: '
36621                          ||xla_context_pkg.get_event_nohdr_context
36622           ,p_level    => C_LEVEL_STATEMENT
36623           ,p_module   => l_log_module);
36624 
36625      END IF;
36626 
36627 
36628      xla_context_pkg.set_event_nohdr_context
36629        (p_nohdr_extract_flag => 'Y'
36630        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
36631 
36632      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36633         trace
36634           (p_msg      => 'No Header Extract Flag is set to Y'
36635           ,p_level    => C_LEVEL_STATEMENT
36636           ,p_module   => l_log_module);
36637      END IF;
36638 
36639  END IF;
36640 
36641 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36642    trace
36643       (p_msg      => 'END of CreateHeadersAndLines'
36644       ,p_level    => C_LEVEL_PROCEDURE
36645       ,p_module   => l_log_module);
36646 END IF;
36647 
36648 RETURN l_created;
36649 EXCEPTION
36650 WHEN xla_exceptions_pkg.application_exception THEN
36651    RAISE;
36652 WHEN OTHERS THEN
36653    xla_exceptions_pkg.raise_message
36654       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.CreateHeadersAndLines');
36655 END CreateHeadersAndLines;
36656 --
36657 --
36658 
36659 --
36660 --+============================================+
36661 --|                                            |
36662 --|  PUBLIC FUNCTION                           |
36663 --|                                            |
36664 --+============================================+
36665 --
36666 FUNCTION CreateJournalEntries
36667        (p_application_id         IN NUMBER
36668        ,p_base_ledger_id         IN NUMBER
36669        ,p_pad_start_date         IN DATE
36670        ,p_pad_end_date           IN DATE
36671        ,p_primary_ledger_id      IN NUMBER)
36672 RETURN NUMBER IS
36673 l_log_module                   VARCHAR2(240);
36674 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
36675 l_temp_result                  BOOLEAN;
36676 l_result                       NUMBER;
36677 BEGIN
36678 --
36679 IF g_log_enabled THEN
36680    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
36681 END IF;
36682 --
36683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36684    trace
36685       (p_msg      => 'BEGIN of CreateJournalEntries'||
36686                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
36687       ,p_level    => C_LEVEL_PROCEDURE
36688       ,p_module   => l_log_module);
36689 
36690 END IF;
36691 
36692 --
36693 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
36694 
36695 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
36696    trace
36697       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
36698       ,p_level    => C_LEVEL_STATEMENT
36699       ,p_module   => l_log_module);
36700 END IF;
36701 --
36702 xla_ae_journal_entry_pkg.SetProductAcctDefinition
36703    (p_product_rule_code      => 'PI_COST_MANAGEMENT_ENC'
36704    ,p_product_rule_type_code => 'S'
36705    ,p_product_rule_version   => ''
36706    ,p_product_rule_name      => 'Permanent Inventory Cost Management Encumbrance'
36707    ,p_amb_context_code       => 'DEFAULT'
36708    );
36709 
36710 l_array_ledgers :=
36711    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
36712       (p_base_ledger_id  => p_base_ledger_id);
36713 
36714 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
36715    l_temp_result :=
36716       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
36717          (p_application_id           => p_application_id
36718          ,p_base_ledger_id           => p_base_ledger_id
36719          ,p_target_ledger_id         => l_array_ledgers(Idx)
36720          ,p_primary_ledger_id        => p_primary_ledger_id
36721          ,p_pad_start_date           => p_pad_start_date
36722          ,p_pad_end_date             => p_pad_end_date);
36723 
36724    l_temp_result :=
36725       l_temp_result AND
36726       CreateHeadersAndLines
36727          (p_application_id             => p_application_id
36728          ,p_base_ledger_id             => p_base_ledger_id
36729          ,p_target_ledger_id           => l_array_ledgers(Idx)
36730          ,p_pad_start_date             => p_pad_start_date
36731          ,p_pad_end_date               => p_pad_end_date
36732          ,p_primary_ledger_id          => p_primary_ledger_id
36733          );
36734 END LOOP;
36735 
36736 
36737 IF (g_diagnostics_mode = 'Y' AND
36738     C_LEVEL_UNEXPECTED >= g_log_level AND
36739     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
36740 
36741    xla_accounting_dump_pkg.acctg_event_extract_log(
36742     p_application_id  => p_application_id
36743     ,p_request_id     => xla_environment_pkg.g_Req_Id
36744    );
36745 
36746 END IF;
36747 
36748 CASE l_temp_result
36749   WHEN TRUE THEN l_result := 0;
36750   ELSE l_result := 2;
36751 END CASE;
36752 
36753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36754    trace
36755       (p_msg      => 'return value. = '||TO_CHAR(l_result)
36756       ,p_level    => C_LEVEL_PROCEDURE
36757       ,p_module   => l_log_module);
36758    trace
36759       (p_msg      => 'END of CreateJournalEntries '
36760       ,p_level    => C_LEVEL_PROCEDURE
36761       ,p_module   => l_log_module);
36762 END IF;
36763 
36764 RETURN l_result;
36765 EXCEPTION
36766 WHEN xla_exceptions_pkg.application_exception THEN
36767    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36768    trace
36769       (p_msg      => 'ERROR. = '||sqlerrm
36770       ,p_level    => C_LEVEL_PROCEDURE
36771       ,p_module   => l_log_module);
36772    END IF;
36773    RAISE;
36774 WHEN OTHERS THEN
36775    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36776    trace
36777       (p_msg      => 'ERROR. = '||sqlerrm
36778       ,p_level    => C_LEVEL_PROCEDURE
36779       ,p_module   => l_log_module);
36780    END IF;
36781    xla_exceptions_pkg.raise_message
36782       (p_location => 'XLA_00707_AAD_S_000020_BC_PKG.CreateJournalEntries');
36783 END CreateJournalEntries;
36784 --
36785 --=============================================================================
36786 --
36787 --
36788 --
36789 --
36790 --
36791 --
36792 --
36793 --
36794 --
36795 --
36796 --
36797 --
36798 --
36799 --
36800 --
36801 --
36802 --
36803 --
36804 --
36805 --
36806 --
36807 --
36808 --=============================================================================
36809 --=============================================================================
36810 --          *********** Initialization routine **********
36811 --=============================================================================
36812 
36813 BEGIN
36814    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
36815    g_log_enabled    := fnd_log.test
36816                           (log_level  => g_log_level
36817                           ,module     => C_DEFAULT_MODULE);
36818 
36819    IF NOT g_log_enabled  THEN
36820       g_log_level := C_LEVEL_LOG_DISABLED;
36821    END IF;
36822 --
36823 END XLA_00707_AAD_S_000020_BC_PKG;
36824 --